You ready to start or? OK, cool. OK, so as you might have gathered from the title of this talk, we're going to be talking today about writing web services with an emphasis on making things not suck for mobile app developers. So a bit about me. I've been developing for Android since 2010. Currently, I work as an Android specialist at Aztec Labs in Hobart in Australia. My name's Christopher Norgivow, by the way. So everything that I've had to do whilst working as a mobile developer, I've generally had to write an app that interfaces with a web service of some description through an API. Now, sometimes the process of writing these apps can be easy because the API has made it easy for me. But sometimes this can be really bad because things have been developed without much thought for mobile. So this talk is basically a series of requests, ideas, and thought experiments for making web service APIs better for mobile apps. So the takeaway idea from this talk is that your infrastructure hates you. Mobile networks can't cope with the level of usage that we put them through now. So the techniques in the talk, I'm going to show you how to work around the ways that mobile networks suck. So primarily, it's a list of things that API developers should include and things that you should demand as a mobile app developer of the person who's designing your back-end API. I don't guarantee that anything here makes sense, but if you see things that you like, feel free to go and use them in the real world. So there's a bit of opinion in this talk. So allow me to set the stage. This talk is about networks. And to be fair, as developers, we've dealt with networks that are pretty good in the past. The quality of the networks that we've dealt with have lulled us into a false sense of security with false expectations. So when we develop code, we're normally working at a high-end workstation, a pretty expensive one. And these workstations are generally connected to a gigabit ethernet network via a very short cable to a highly reliable broadband internet connection. Sometimes we might be connected via wireless instead. But the point is that the connection that your work station is connected to is still highly reliable. And the problem is that we're developing with simulators and emulators for our mobile platforms. We're going to be testing our mobile apps on these same highly reliable networks. Now, our development networks are basically ideal. They rarely disappear. And when they're alive, things like packet loss, connection dropping, these never happen. Web services are built and tested with these sorts of networks in mind. Now, the problem is that actual mobile devices run on actual mobile networks. There's no such thing as an ideal mobile network. So the combination of unreliable networks and erratic users, it basically makes the avenues for failure of network-based mobile apps, the avenues of failure are huge. This is because users can store themselves in Faraday cages. People can use their devices on public transport. They go through train tunnels. They put themselves in black spots like crowded city centers where there's not enough capacity. Or they can just voluntarily lock themselves into a bad mobile network. Basically, mobile networks and mobile apps can't cope with these situations that we put them through. But still, basically every app out there needs to do some sort of communication with a service through the cloud. So for this reason, our apps need to work with the infrastructure that we're provided with. So with that in mind, what I want to do in this talk is explain properly what we as mobile developers need to understand about the networks that we're dealing with. And with that, I'll explain some API design ideas that you can take to your back-end team so that your next network-bound app doesn't have to suck. We'll do this first by explaining a bit about networks and how they work. Then we'll look at ideas for APIs that work in the face of failure. And following that, we'll look at making APIs actually useful for mobile apps. And at the end of the talk, you'll hopefully know how to make an API that doesn't suck. So to design an API for mobile networks, you must first understand how mobile networks work. Mobile networks are inherently different to fixed networks for various reasons. So this is the first mobile phone I owned. It's a Nokia 5110. It was released sometime in the late 1990s, I forget when. And it connected to GSM mobile networks. Now GSM networks are the basis for every mobile network that's out there today. So it had three important features that I can think of. It could be used as a telephone. It could be used to send and receive text messages. And its killer feature was the first real example of an app that I can think of, the game Snake. Now, Snake didn't need to connect to the network, but the other two things did. So to support these features, a network would need to provide a minimum of features itself. So to send voice transmission, you need not much bandwidth at all. You need 12.2 kilobit of voice transmission in either direction. Now, voice transmission protocol is what we call best effort. When you're transmitting voice, you can drop frames and still have your listener understand you. And we're also pretty good at repeating ourselves when a sentence fails to get transmitted. That is, we're really good at repeating ourselves if you don't understand me. Now SMSes, SMS text messages, these also don't require much bandwidth at all. Surprisingly, the protocol for SMS is also best effort.  And Twitter has proven that you can't really send anything useful in 160 characters anyway. So at the same time as I had my Nokia 5110, the internet on desktop machines was just starting to take off. In more advanced countries, the first residential cable motors were going in. Millions of 13-year-olds were discovering web design for the first time thanks to things like GeoCities. So the experience of the internet was basically a beige PC of some description. And this experience didn't change very much at all for quite some time. We might have moved to laptops and Wi-Fi, but the way that we consumed the internet didn't change. And then very, very suddenly, mobile phones with internet capability happened. This was really sudden. And now we do a large proportion of our consumption of the internet via mobile devices. But the problem is that when we design internet applications, we assume that we're going to have this antique network. And so when people develop for mobile applications, they still think that they're going to have this antique way of talking to the internet. Also often, they provide exactly the same service, but with just the app as a skin. And this approach really doesn't work. Let's look at a TCP-IP stack, the traditional internet stack. So at the center, we have this thing, transmission control protocol and internet protocol. Now, internet protocol is what we call the best effort protocol. It's like GSM, voice, and SMS. But when you add TCP on the top of it, you get guarantees of reliability. And when you have a reliable broadband or dial up or cable modem type internet connection, TCP and IP is quite reliable. We can expect our network to just work, and this is the usual case. So we can expect our apps to just be able to connect to the network whenever we want them to. So when an error occurs, this is usually due to catastrophic failure. Network devices have broken. A remote server is down. These sorts of failures are very infrequent. So what's different about mobile networks? Well, on a fixed network, we have our reliable data link layer. On a mobile network, we have a best effort, our data link layer. Things don't always work, and they usually don't work. So this creates an entirely different dynamic for network usage. So we can occasionally expect for things to work. And the most frequent error case is not that a server is down, but that our link has failed. And these sorts of things are a part of our day to day usage of mobile networks. So it's clear that we might be doing the same things with these networks, but mobile internet is not the same as internet on our desktop. But users expect them to behave in exactly the same way, because mobile just came along so suddenly. We expect to be able to do the same things with the same reliability. And because our users are using our apps, they think that when it doesn't work, it's our fault, not the network's fault. So that's unfortunate, but that's how users behave. So how is asking for something on the internet work? Well, so in the ideal world, we merely have to negotiate a connection from our network. Then we can request data from our server, and then our server gives a response back. Now in some protocols, you don't need to negotiate a connection for every single thing you want to get off the network. You can reuse the same connection. In HTTP, this is called Keep Alive. You should look into it. Now as it turns out, making a net connection on the internet is surprisingly difficult. Frequently you have to do things like look up a DNS entry for a domain name or something like that, especially if you have multiple servers connecting to the same domain address. So if you make one connection to a server, one HTTP connection from your Android application, you might actually be making a whole heap of extra connections just to resolve a domain name and then just to get the data. That's lots of extra connections that you don't want to make, because making connections on mobile networks is expensive. And it's actually pretty slow as well. So ideally, you want to reduce the number of connections that you create. You can make connections long lived. Long polling is a great thing. Now the problem is, all too frequently, we lose all the signal on our mobile network. We go through a tunnel or something like that. So it's a bad idea to expect any particular connection to hang around for any amount of time at all. So something else we'd like to do is to not rely on connections being alive for a very long time. And as you can see, this is a bit of a conflict of interest. So we know that if we're going to be making a mobile app, we have to make trade-offs with the network that we're dealt with. So designing an API that makes a mobile app happy is a matter of exploiting this particular trade-off. So the primary goal of a mobile API is to be able to get information from some remote service in the cloud down to our mobile device. And the problem is that mobile networks don't guarantee that data will reach you on first request. In fact, they don't guarantee that the data will get to you at all. So planning to make APIs work for mobile is a matter of planning to fail. Now in this section, I'm going to start off with the hard stuff and then go through to the easy stuff. That way you're going to remember all the hard stuff and forget the other stuff when you stop paying attention. So you can go and do the useful stuff first when you go back into the real world and develop things. So the first tip I have is to make everything static. Solving static content is a solved problem because HTTP, which is the protocol that everyone uses for these things, was designed with the intention of serving up linked static documents. Dynamic stuff came as an aft of thought. And HTTP made sure that you could cache things easily in the face of dodgy connections. So the trick here is to make even dynamically served stuff appear like it's static. So you may be thinking, OK, I've got a web service and I'm generating new stuff for every request that gets made. I can't make everything static because then my service wouldn't work. Well, in far too many cases, what you're actually doing is serving up exactly the same content every single time for stuff that is unlikely to change, which is a waste if you're not telling your clients how they can cache stuff you're wasting bandwidth. So as an important rule of thumb, if your app's data doesn't change, then say so. HTTP clients are designed to take advantage of static data. So this here is an HTTP response. It contains a whole bunch of headers that identify various things about this response. Now, most important are these ones here. The last modified and expires header. If a last modified header is present, then a client can tell whether that data has changed since the last time it requested it. And so if it knows that it has that data, it doesn't need to request it again. This ETag thing here is basically a more machine readable version of that. If you provide the same ETag for request, you have exactly the same version of the resource. If an expires header is present, then the client will avoid having to re-download a particular request until expiry. So this means that a particular API call can function even if your device is offline. HTTP caches are pretty good at this. And I believe Android 4.0 has a connection case in HTTP clients. So go look that up if you want to make this stuff work. But you need to make this work from a server point of view. Provide these headers before your Android app can actually exploit that. So the problem is that if you have truly dynamic data, something that changes for every single request that you make, then you can't really cache it. So the trick here is to make sure that once you've made a request for a particular resource, a response can be trivially replayed until you know that you have all of the data. So to do that, we need to talk about REST. Who here has heard of REST? So this is REST here. It's a web page with a pretty URL, a human understandable URL. Well, that's not actually the case. Pretty URLs is sort of a consequence of REST. It's not REST itself. REST is about thinking about resources and how you access and manipulate resources over HTTP. So the idea is that every resource has an identifier, which is your URI, and that resources never change unless you tell them to change. And you make use of HTTP semantics, get, post, put, stuff like that. So if you use REST well, making resources reusable is quite easy. How do you do this? Well, if you let your URLs identify a specific response, so if you ask for a resource to frequently change this, instead give back a URL that identifies a specific response. So if you make a request to something, have your service generate that response and then put it in a memory case of some description, then return a 307 temporary redirect with the case key, which is that bit at the end, as a resource identifier. Now, if you have HTTP keep alive switched on, when you get that 307 header, you can go and make the second request without having to negotiate a new connection. This is basically free. But the thing is that if you have a specific response in memory, this is now a resource. And you can suddenly reuse your dynamic responses. You can use an HTTP 206 partial content, which basically says, I've got this much of the response already. Go and give me the rest of it. So you don't have to download stuff more than once. This is a really cool idea, because clients can resume partially finished responses. So if you have a really long response, you don't have to re-download it if you're going through a bad network. And that's a great thing. Now, if you have resumable requests, if you can do this HTTP 206 thing, then tell your developers about it, because they need to do a bit of work. But it's not much work on the client side. So if you support it, document it. So the next idea is to make everything repeatable. So if you have a really dynamic API, then it's important that requests be repeatable. It's important that a mobile app and the service that it's connecting to maintains its synchronization. It's far too easy to implement a service that gets ahead of itself. So the particular case I'm thinking of is something where you're plotting stuff that changes over time, things that track movement on a map, a particular case where I saw this was in a chat application. Anything where events change over time. So the case I see is this. You have a URL called events. And when you call events, this serves up the latest set of events that you need to process in your app. The problem is, well, you get the next one. So you've got events six through 10. And so basically, what happens if, when you make your call here, the response fails? This is not particularly good. It's all too easy to write a really bad PHP app, which just says, OK, a user has made this particular call. So update the session saying it's now up to event 11, even if it didn't get all the events in the previous call. This is really bad because it means that the mobile app gets out of sync. So a rule of thumb here is that only the app itself knows what state it is in. Oh, oops. I think I've lost my slides. Yeah, so only the app knows what state it is in. So if you don't keep things in sync, you end up with inconsistency. And if your app shows inconsistent data, it's really not worth using in general. So one trick you can do here is to make sure that your app can repeatedly serve up events that it thinks it has already served. You can cache things in memory. So you can make the same request multiple times. And the way that I do this here is by adding a since parameter to my endpoints. So you can ask for old events, even if it wants them. So this means you can ensure consistency. So if things crash, when you've made the second call, well, you can make this call again. And that's ensuring consistency. Now, for bonus points, for saving bandwidth as well, you can use partial data. You can do this by caching your responses, like I showed you before. Or you can present your responses in a way that is amenable to incremental parsing. So to talk about that, let's talk a bit about data encapsulation, how you send your data across the network. So everyone here has probably heard of XML. I don't like XML very much. It's big. It's bloated. It's not particularly good to read. And it got used in far too many places, if you ask me. Now, more recently, JSON came around, and it replaces XML in a large number of cases. Now, there's good reasons for this. JSON is lightweight. It's easy to read. And it maps well to standard data structures that we write up in our apps. So if we like JSON as a format, well, we need to realize that JSON has flaws. And I'm going to go through a couple of these. And these flaws are not particular ones. But if you don't know that they're there, then you won't code around them. So JSON has two ways of expressing compound data. You have lists, which store ordered information. And you can derive useful information from where something appears in the list. So if you have item 1 in a list, you know that it, meaningfully, comes after item 0 in a list. So because something appears after something in a list, it logically appears after something in that data structure. Now, you also have JSON objects. These store unordered clumps of information. So if something appears after something in a JSON object, that does not meaningfully come after something in that object. And I'll give you an example of that. So here's a standard data structure. You've probably seen trees before. So in JSON, you can represent this tree as a set of nested objects. This produces the same representation as that tree. Now, the problem with JSON objects is that objects don't define order. So if we turn this into something a bit more concrete, it's like that. So we have an object here. And just watch those bottom two lines. This JSON object here, with those keys and those values in that order, is exactly the same JSON object as that one, right? So those two lines appear out of order in the two representations, but they are exactly the same object in memory. So with that in mind, we can now look at one useful thing to do with incomplete data. And that's to be able to parse things incrementally. This lets you show incomplete data whilst you wait for the remainder to load. So if you've used a web browser on a slow internet connection, you know that if your connection drops out, your web browser will try to make sense of the HTML it's already received. It will display what it has and try to make sense of it. Now, you can't do this with every data format that's out there. It just doesn't work. So if you have a complete JSON object that looks like this, but only this much is loaded, then you don't have a valid JSON object and you can't make a valid JSON object out of it. You need to have every key present. This is a meaningless object if you lose those last two keys. So something that I see a bit more frequently is to wrap a list of items. And this list of items is the most important part of the response inside a JSON object, which carries a bit of extra information for your display. Well, if you lose your connection halfway through that list, because that list is inside a JSON object, you can't make sense of the rest of the list because you need the outside object to be finished as well. You need all the keys of every object there to parse it. So that's unfortunate. This is also meaningless. You have to start your response again. So we need to think about something called record-oriented data. If you have a list of events or a list of people or something that's in a list, then what you have is a set of records. Now, if you have a set of records, you have record-oriented data, so use a record-oriented format. These are trivial to parse incrementally and you can resume responses of record-oriented data if your connection drops out. And the most common record-oriented format out there is one called CSV. Who's heard of it? Right, everyone knows about CSV. And because you all know about CSV, you're probably thinking why on earth is Chris talking about CSV and to talk about web services? Well, CSV has a few key attributes. Firstly is that every record has the exactly the same number of fields and that every field appears in a predictable place. This means that the format of your records or your objects is rigid. And it also has a defined rule that tells you when you have a complete record. You just look for a new line character. New line character, you have a new record. So in an event-driven situation, using event-record-oriented data means you can do something like this. You make your first request, you have your second request, and that fails after three of the records or something like that. Well, you can parse what you've got so far and then start at everything after event seven instead of going back and asking for everything since five again. So that means you can pull down parts of the response, display those to the user and then go back and get the rest of the stuff that you missed out on. So I don't actually recommend using CSV as a format. CSV is hard to debug, it's not very expressive. And there aren't a lot of languages that have good CSV support out of the box. What you need to think about instead is whether you could represent your data with CSV. So if you've got a record-oriented format that looks in CSV like this, we have a fixed number of fields which means that every record is predictable. And every object is represented with a single CSV record. So this CSV file maps down to a JSON list like that. Right? So every record is a JSON object and every JSON object has keys. But the important thing is that the outside object, the outside, like the wrapper of your response is something that has defined order. And when you have defined order, you have a record-oriented format. So if your connection fails halfway through, I don't know, response number three, then we know everything that we need to know about the first three responses there. We just drop off the bit of the record that we missed the end of, drop the comma at the end and shove a square bracket on the end of it. We can then parse that and then we can go off and make a request for the remainder of the data. And that's what you get for encapsulating in lists instead of objects. So the next thing I want to talk about is keeping your responses small. If you have a small response, you can guarantee that your user is going to get the stuff more often than not. So I'm going to give you a counter-example of this to explain how somebody has done this wrong. And that counter-example is Twitter. Twitter's a pretty common JSON API. I've written a few apps that use it. So I'm going to request a single tweet from Twitter. This is the JSON that gets returned for that. Now, I'm going to look for the actual text. Yeah, here it is just here. Here's our 140 characters' worth of text right there in the middle of 3,396 bytes of JSON. So what have we actually got in there? Well, we've got 24 times the amount of extra information there. It's a bit bloated. Let's see what else we've got. We have here 1,540 bytes' worth of user profile information. Information about the user who has sent this tweet. It's actually there so that you can completely replicate the Twitter website with your background and your colors and everything like that from the single JSON record. And I can't think of a single application other than the Twitter website that needs that. So, yeah, please don't be this bad. Now, the next thing that you want to do is you want to minimize the number of requests that you make. So keep your responses small but minimize the number of requests because the number of requests you make, if that increases, then one of them is going to fail. And you also get lag if you make lots of requests. Initiating a connection is the highest source of latency on 3G. So it's important to keep the number of connections to a minimum. So you need to provide more data than is absolutely necessary. So I'm going to give you an example here and what do you think that example is going to be? No, no, I'm going to show you Twitter again. And I'm going to show you exactly the same piece of JSON. So here is our text here. That's the most important bit of information that we need to display. But there's other things that you want to display. You want to, I don't know, you want to know about the users that are mentioned in it so that you can go off and ask directly for each user that gets mentioned in a tweet. I get their profile information so you can pull that up quickly. It means you don't need to make one request for the user ID for a given user and then another request to actually get that user's profile because you already have their ID. There's a bit of information about which tweet is being replied to so you can go and do your conversation chaining. So you can say this tweet is a reply to that tweet so go and fetch that tweet and then get the tweet before that. The point is that there is useful extra information here that you can provide to your user or to your client app. So yeah, be selective about what information you send down. If your information is highly redundant, then separating things out into a separate request, it might save data, but getting your data to the client in the first place might actually be more important. Now, one major failure that affects every project that I've ever been involved with is a failure to plan for the future. You can add new features to an API, you can delete other endpoints, and this makes your apps a problem because if your app tries to connect to an endpoint that doesn't exist anymore, then that's going to make your app look like a failure. And if you're developing for iOS and you release a buggy version, you've got to wait a week for the new version to go out. You just can't change things whenever you want anymore because there'll just be a broken version of the app out there in the wild for a while. So version your APIs and do this from the very start. Make sure that the first version that you release has version information attached to it. This means that you can break backwards compatibility when you release a new version of the API. You can release a new version of the API, and that means that old, un-updated apps can still work. Users aren't required to update, and, you know, quite often they don't. So here are some ways to do this. The first one, which is pretty common, instead of just having a URL with a resource at the end of it, put a version tag in the middle of the URL. So say, slash v1 slash your endpoint. And that's one way of separating your version out. Another thing you can do is you can identify custom schemers in your MIME type. So instead of saying application slash JSON, you can say application slash JSON plus some custom extension. And that custom extension identifies your JSON schema. Now, the final avenue for failure that you need to plan for is user failure.  So the final part of the talk is to design your APIs to be useful. Make sure that consumers of APIs can do what they want and easily. So the topic I'm going to talk about is replication. Your API should allow an app that you're producing to easily replicate every feature on, say, a web application or a desktop application. If you've got some bigger picture product that your mobile app is just a small part of, make sure that you can replicate everything in the bigger version of the app in the mobile app. It should be easy to do this. And the way to do this is to make sure that everything is exposed. Expose as much as possible. If you have functionality, add an API call for it. If you don't want to do that, add the functionality to an existing API call. So design your API in tandem with your web design team or your desktop team. Make sure you are developing for the same way of accessing your data. Because what that means is that if your website is using your API calls, then if they can't get it something, there'll be an API call added for them. Chances are if a website doesn't work with just the API, then a mobile app won't work either. Now you should always consider data encapsulation. JSON and XML are actually pretty similar. Whilst we all prefer using JSON, if you've got a pointy head boss who only knows about XML, then provide XML support because you can encapsulate the same data structures and say, hey, we've got an enterprise XML API and that makes your pointy head boss like you a lot. But on that note, fight against SOAP because SOAP is awful. It's impossible to code SOAP on iOS in particular. There's limited support on Android because they've got all this JavaCraft hanging around forever. But SOAP ties you to XML and being tied to a particular encapsulation format is a bad thing. Finally, don't replicate the structure of your database through your API. And API is meant to be useful for developers. So if your data model is only useful to a database and it's heavily normalized, then you're going to have to make lots of extra requests because you can't do joins over HTTP. You can't take two models and join them together in a single query. You want to make sure that you expose data models that make sense for the consumer, not data models that make sense to the database. This is because joins are impossible to do in anything except SQL. To close off, I'm going to talk about HTTP semantics. HTTP has a whole bunch of useful semantics that you can take advantage of when writing an API and it will make it easy to code when you're writing your client code. Use HTTP properly. So firstly, HTTP has methods. It has get. Get is good for getting things. Posting is for changing things. Putting is for creating new things and stuff like that. These all have defined semantics, so take advantage of them. And that will make it easy because you don't have to document as much because if users know, if your client coders know exactly what methods each endpoint responds to, then you don't need to say, oh, get will get this resource because client codes will already know what get does. Use status codes properly. Status codes like redirects, the 300 series of status codes, actually inform cache behavior. So if you use 307s versus 309s with regularity, then that means you know that you can cache 300 responses. So if you've got a permanent redirect, if your API's changed, then say, so 303, say you got a 303, that means that your cache will know to go and get the correct version or the correct endpoint rather than going to the wrong one. 307s say temporary redirects. Temporary redirects are ones that say, okay, you can go and ask for this endpoint multiple times. There's the same thing for the 400 series. So everyone knows about HTTP 404, right? There's also HTTP 410. If you say HTTP 410, then you're saying that this resource is never going to exist again. So your cache will be able to tell you, oh, that endpoint will never have data at it. So why waste time making a request? 404 instead will say, okay, you might be able to go and ask for this later on. And finally, if your web server is actually a teapot, always respond with HTTP 418. I'm a teapot status code. It's a real thing. So that's the end of the talk. Hopefully you found something useful in it. Now, I have Speaker Connect today at 3 p.m., so it's going to be downstairs next to the registration desk, I think. Are there any questions? Can we get a mic over here? Hi, Chris. Hi. I'm Vidya here. Actually, I would like to know, in one of the slides you've presented that JSON is lightweight compared to XML. In what ways is it lightweight? Could you elaborate on this? Okay, so say you have a JSON object with a whole bunch of keys. So each key will represent a piece of data in a JSON object. Now, if you want to do the same thing in XML, you have to say open tag, key, closed tag, then the data, and then, sorry, open tag, then the data, then the closed tag. And you get all this extra redundancy, which makes it really hard to tell which parts of each object relates to which other part. Whereas with JSON, you just say key, then value, key, then value. It doesn't have all that repetition that XML has. Thank you. Okay. Down the front here? Hi. Hi. So you said that everything should be like repeatable, so that it seems like from 0 to 5, then 6 to 7. So for that, is there any protocol because as a developer, developing the complete API will be difficult for me? So say that again. Is there any protocol there with which I can use? It's more a matter of make, like this is all over HTTP, right? And if you take the approach that I said at the start, which is to cache responses, or in particular to not throw away events until you know that they're at the clients, then just putting this in your service will make sense. And using this since parameter, we'll always make sure that you can go back and get things that you might not have already got. Does that make sense? Okay, great. One over here? So one last question. Great. Yeah. So I kind of build APIs as a day job. So this talk was very informative. So thanks for that. Not a problem. So the question is kind of like what he just asked. So building something like this seems really cool, where you can build for failure. But then the amount of logic that needs to go in on the side of the API and on the side of the client is a little high for something like repeats and stuff. So do you know something that has done this in the right way, probably some open source thing so that we can go look it up and get better? So the particular case that I was thinking of was a project I worked on a few years ago. It was an open source, unfortunately. But I lost my train of thought. Sorry. If you have a...  The logic for caching is not actually that difficult. Once you know that the user has incremented their since counter, then you can throw away everything before that and you can actually implement that logic in the subsequent requests rather than doing it on a scheduled basis. So if you say, I want the events since five and then suddenly it says, I want the events since seven, then you can throw away events five and six, right? It's... You don't have to do it in real time. You just do it whenever... You do it lazily when requests at update the since counter goes in. It's not that much of an issue. Yeah, maybe we'll sync after... Oh, definitely. Yeah, that'd be great. And I have speaker connected at 3 p.m. as well. Yeah, thanks a lot. Great. 2.15 today. So 2.15, apparently the schedule's changed. I think we're out of time for questions now. So we are. Yes. Okay, great. Thank you, everyone, for listening.


Go contract down $8.80, trading at $2,013 an ounce, we have silver down $0.15, $0.24, $0.06 an ounce, life's sweet crude, it's only down to $0.91, that's not $3, interesting. $0.91, $0.76, $0.86 a barrel, notes and bonds, a 10-year note, down three ticks, trading $108.26, the 30-year up seven ticks at $115.27 and $king dollar, $king dollar right now trading up $366, $103.925, Euro at $108, yen at $149, British pound at $124 to $1 U.S. dollar. Well you know when we take a look at the S&P folks bottom line, you still got the S&P and the ABC structure up, we're trading right now at a price point, here we go, okay trading it right now at a price point of $454 and it's $462, that's the number, we hit $456 outside and I suspect what we're going to see here folks, okay this is going to get really interesting. You've heard me talk about the Daft of Thanksgiving before, I think we're going to see a run same deal man, you know it's going to be a liquid market, they'll run this thing and then they'll probably run it right up to that $462. We went to the NDX100, we take a look at the NDX, NDX, the three Q's, they're also running a Pupak 76 right now and now it's intriguing here, you know for the day before Thanksgiving the Q's got volume in it man, I mean they got some volume that's basically kicking in and inside that NDX we take a look at the strength versus the weakness, you know kicking it up is eBay up 3%, AMD up 3%, Makata Libri 2.4 and then we get over to the dollar, so the dollar bottom line had a little counter trend bounce today, couldn't hold price, so when you see this, you know the dollar got up to this $104,213, now you're at $103,936 and bottom line that dollar wants down to that $99 level, notes and bonds, we take a look at notes and bonds, they still want higher price, you know what's intriguing is that Bloomberg has that rates are going higher, it's like I don't know what you're looking at man, but the 10-year is only down 3 ticks, okay, so the rates are not going higher, okay, right now this always gets intriguing to you about headline news versus looking at the actual instrument, you know, we're still at 4.14 on the 10-year, stay right there folks, come right back.


Many psychologists associate high-function depression with persistent depressive disorder, which is a prolonged state of depression. Those with high-function depression may not feel as helpless as those with clinical depression, but their depression does affect tremendously their quality of life. It minimizes their interest in everything, including social events with friends and family. High-function depressives will go to school or work and socialize when necessary, but once they're done with their responsibilities, they'll withdraw themselves. Here are seven signs you may have high-functioning depression. Number one, you're concerned with time.  Even if you find a new hobby or job, it still feels like a fool's errand, and you wonder if all the time you're investing into such activities are worth it. Number two, you constantly criticize yourself. Because you feel like you're not achieving much, you criticize yourself.  Number three, you overthink. It doesn't matter if a situation is big or small. You'll find yourself overthinking it and eventually breaking down. Number four, you feel misunderstood.  Number five, you feel saddened. It's normal to feel sad from time to time, but if you're sad or numb most of the time, even while participating in fun activities, you may be suffering from high-functioning depression. Number six, you have unhealthy coping strategies. Since you overwork yourself, you may lean towards drugs or alcohol to deal with stressful situations. Many high-functioning depressives turn to self-destructive habits to clear their minds. Number seven, you have excessive pastimes. Along with any unhealthy coping habits you have, you may also find yourself constantly gaming or binge-watching TV series, among other things. Although these activities seem normal, the problem is you're actually using them to escape reality. High-functioning depression is difficult to notice because those who suffer from it are still able to continue with their responsibilities.  But in reality, it's not okay to live life feeling numb, sad, and constantly criticizing yourself. If you do have high-functioning depression, try to find the root of it.  Have you ever experienced these symptoms or been diagnosed with high-functioning depression? If so, what methods have you tried to recover from it? Feel free to share your stories in the comments below. If you enjoyed this video, be sure to visit our website and other social media for more content. And if you'd like to support us, please check out our new Patreon account or grab a digital magazine from our shop. Links will be in the description below. Thanks for watching!


Good morning. My name is Stephen Brozenstone, and I'm Chancellor of the Minnesota State Colleges and Universities. I want to extend my deepest condolences to the students, faculty, and staff of St. Cloud State University, to the community of St. Cloud, and most of all, to Dr. Pardo's wife, Christine, his children, and grandchildren. Rose Passing is a huge loss to St. Cloud State University. It's a loss to the state of Minnesota, and it's a loss to higher education. He was a highly respected leader, both here in Minnesota and across the nation, as well as around the world. I will miss his leadership and counsel immensely. Earl was a colleague and friend not only to me, but to presidents throughout the Minnesota State Colleges and University system. He played an absolutely vital role in shaping the strategic direction of St. Cloud State University and of higher education in Minnesota. Earl was a thoughtful, insightful leader who cared deeply about this university, its students, and the St. Cloud community. In this time of grief and transition, it is important that there be continuity in leadership. For this reason, I have asked Provost and Chief Academic Officer Ashish Vaidya to serve as Acting President. In addition, during next week's meeting of the Minnesota State Colleges and Universities Board of Trustees, I will bring forward for its consideration his appointment as Interim President. I've had the opportunity to work with Ashish over the past year. He is a gifted leader, and I know he will continue to work closely with faculty, staff, students, and the community throughout this transition.  He is singularly equipped to do so. I ask the university and the larger St. Cloud community to lend its support of Ashish and lend its support to the university's leadership team as they work through this difficult time. Once again, my condolences to the entire St. Cloud State University and greater St. Cloud community. I'm pleased to introduce to you Acting President Ashish Vaidya. Thank you, Chancellor Rosenstone. The tragedy that we are experiencing right now with the death of President Erlich, part of the third, is profound. Like every member of the St. Cloud State University community, my first and foremost concern is with the family, his wife Christine, and his children. Our heartfelt sympathy goes out to the family at this time. As a campus community, we are all grieving this great loss, not only to St. Cloud State University, but to the greater St. Cloud community, the state of Minnesota, and frankly, the region and the global community as well. As the Chancellor pointed out, President Pato was an amazing leader, dedicated to student success at St. Cloud State, and preparing students for life, work, and citizenship in the 21st century. As we grieve his death, let us all come together as a community to share and strengthen the legacy that he leaves behind at St. Cloud State. Last night as we learned the news, the leadership team assembled quickly, and while it was a difficult conversation to have at St. Cloud State's team, we are here to show you that we remain committed to student success, first and foremost, and to regional and global engagement. President Pato's commitment to access an opportunity is unwavering in our work, and one of the prime reasons why I chose to join his team and him in partnership. His leadership has steered St. Cloud State towards some amazing, amazing accomplishments. Every program is grounded with a firm understanding of what are the needs of employers, but with the foundation of the Liberal Arts for all our employees and graduates. He is dedicated to keep the cost of education affordable for all, and to increase opportunities for each and every student of this region. His dedication to internationalization, diversity, and inclusivity were also clear as he did his work in the community and around the world. A week ago, I had the occasion to spend some time with him at the NAFSA annual conference, where some of you will know he serves on the board. We're among other things. We got a chance to talk a little bit about life and other kinds of interesting things. And one of our conversations had to do with the plenary speaker of the day, David Brooks, who I understood, President, was quite a fan of. David Brooks spoke about his latest book, The Road to Character. In that, he mentions the need for us to rebalance our scales with respect to resume virtues, the ones that bring us wealth, fame, and status. With that of eulogy virtues, those that exist at the core of our being, kindness, bravery, and honesty. I would say that President Potter has, over his lifetime, built a strong inner character, one filled with eulogy virtues. More information will be forthcoming in the weeks ahead about services and an opportunity to come together as a campus community to celebrate President Potter and his tremendous contributions to the university. I want to thank you all for being here in support. It means a great deal to us all at the university. I will now ask Mayor Dave Kleis to say a few words on behalf of the City of St. Claude. First of all, first off, my thoughts and my prayers are with Christine, his family, and the broader family, our community. Today, the last night, I lost a friend. St. Claude State University lost a friend. Our city lost a friend. Our community lost a friend. Earl's impact on this community will be felt well into the future. He had a remarkable ability to connect. The connection between St. Claude State University and the City of St. Claude has never been stronger, and that's because of his leadership. A true measure of the leadership is that impact that will be sustained because it wasn't a top-down approach. It's every aspect from faculty to students to staff connected with the community. Nine years ago this summer, I had the opportunity to meet with Earl, and his vision, his first connection, was to make sure that it was the community. He many times said, and I reiterate over and over, the university will not do well if the city does not do well, and the city will not do well if the university does not do well. He understood that connection, and that connection is deep because of his leadership. He also had a tremendous commitment to service. As a member of the Coast Guard, it was Earl Potter who created military connection here and his support for veterans and students returning. That's a legacy that also he's committed to. It's part of that service that's ingrained in him. He will truly be missed by so many, but his impact, his leadership, will live on in this community and certainly with this university. Again, our thoughts and prayers are with the family, all of us as a family of Earl. I want to introduce, he had a connection with students, again as I mentioned, it's all, and that's why he understood why he was here. The community and students, so I'll introduce the student senate president to have Kayla come up and say a few words. It's an honor to be here today with a statement from the family of Earl H. Potter. President Potter came to St. Cloud State because he felt this is the type of place he could make a difference. He was incredibly proud of St. Cloud State University and its students, faculty and staff. And he was likewise proud of the greater St. Cloud community. We thank you for your thoughts and prayers. Kristen Potter and the Potter family. Thank you, Michaela. We are now open for any questions. The chancellor, the mayor and I are available, including Adam Hammer, if there are other kinds of questions, so we're happy to open up the questions. Do you have any more specific information about the cause of the accident? Adam Hammer, director of media relations at St. Cloud State. Right now, there's no other information available except for what's already been publicly released by the state patrol. I think we had learned he was heading to a meeting. Was that associated with St. Cloud State or vegetation? Absolutely. In fact, he was heading to a meeting with our vice president for advancement, Matt Andrew and the St. Cloud State Foundation board chair. They were supposed to meet for dinner about raising additional money for the university. So he was constantly at work trying to bring additional resources for the university. Can you speak more specifically about some of the lasting impacts that you can see that students and alumni see on this campus that would not have been here if not for him? Well, in my short time here, about a year, it has become increasingly clear to me the kind of impact that he has and would have continued to have on this campus. As I mentioned a few minutes, the unwavering commitment to access an opportunity. The chancellor and I were with his family with Christine and his daughter briefly this morning. He, as an undergraduate, went to Williams College, a private liberal arts college. He understood the privilege that he had to go to a place like that. And as his experience matured, he was very clear that he wanted to serve public higher education, which is where, of course, he spent the most of his career. And so when he came to St. Cloud State, as you heard from Michaela, this was home to him and his family. Every aspect of what I see around the university with the students at the core is a powerful reminder of what he stood for at his campus. The quality of the education that occurs at this university, its commitment to its students, its preparation of students for the global world they're going to live in, and what it means to be global citizens. Not just a great liberal arts education, we learn to think and be creative and imaginative of an education that actually prepares you for the work that needs to be done for this community to continue to thrive. These are all monuments to the work that Earl Potter did as president over the years. There are few places in the country where we see the type of partnerships that this university has built with the region and with other universities and students around the globe. This morning I've received dozens of emails not only from our presidents but legislators and from partners globally for whom this university was a critical partner in serving students and preparing them for the future. That's all part of his legacy. He was unwavering, unwavering in his commitment to equity and access and diversity. It's not always an easy commitment to make, but he was unwavering in what values our students needed to learn, to grow with and what it meant for this university to serve this community. I think those are all part of the lasting legacy of President Earl Potter. Clearly from a community aspect there has never been a stronger relationship between St. Cloud State University and the City of St. Cloud. We often refer to that town and gown relationship that communities around the country try to strive for. We've achieved that here because of Earl's leadership. There is not only that connection with individuals but a physical connection.  Now it's on the edge of the university where it connects community to the university. That's a physical connection that he helped. There's not a border commission from economic development to community engagement to all aspects that didn't create a greater connection. So that piece of his legacy, certainly, and that impact in the community is very visible because of his impact. McKenna, if you don't mind, could you share what his interaction was like with students and give us some insight into his personality? Definitely. Potter was definitely here for the students. He wasn't just administrative, but he was also caring and he always reached out to make those relationships with students. And he never forgot to stop and thank everyone for their work and effort that they put into better the university. And that's all he ever really wanted was to make this a great experience for all students. Did you ever have any kind of interaction or any personal story to share when you needed help on a project? Or did you do some type of work with the president? Yeah, definitely. This past year I was the vice president, so we had monthly meetings with him. And you just sit down and just kind of lay out all the work that you did. And he wouldn't just listen, but he would take in everything and then he would give you the best advice. He would encourage you in everything that you wanted to do. And then he would also tell you who to reach out to.  Yeah, he was really approachable. One day I went into his office and he was very dressed up as per usual. But then I saw these bright sky blue socks and I just had a comment on them. They were so cute. I was like, those are the best socks I've ever seen. And he could just see his face light up and then he's like sitting in the big office chair and just swivels to the president, which was summer vocal this past year. He's like, did you see my socks too? He was a really loving and caring guy. My name is Haji Yusuf and I was a student here at St. Cloud State University. From the first time I met President Poro, he's met this university open to everyone. Open to all my own minority students. He will talk to us, he will advise us. He played a big role in this university. He was a good friend of mine. He gave minority students and minority businesses an opportunity to do business with this university. And it's tough, it's tough too. I have a meeting with him tomorrow. I was supposed to meet him tomorrow. And I met with him last week and he waved at me goodbye. And it's one time I made him at CoBones and I saw him at the parking lot and I had my two and a half year old son. And he calls me across and says, Haji, Haji. And I look around and he's like, is that your son? It's my son. He's like, come over. So I went over to him and I told him like, you know, President Poro, I always look up to you. And he looks at me and he's like, no, Haji, I look up to you. So a lot of people in this community say that. Everyone I've spoken to say that. That he's so humble. And his time here, his open, he's made this space safe for everyone. Regardless of your religion, your color, your sexual orientation, where you come from, he was building a community. He was a bridge builder. He made it possible for everyone to connect. He was easy to connect to. I was just from, every time I called him, he was like, I want to meet with you. He would say, come, meet with me. You know, and that was for everyone I spoke to him. So he's just, I don't know. I feel for the family. I feel for everyone involved and for all the leadership here in this city. And everyone from me, from my family, we've lost a great guy. We've lost a great guy. And I'm sorry. I had just to say it. Sorry. President, what's your message to the students here hearing all this? You know, one of the last things he said actually, yesterday's President's Council meeting is my colleagues will remember. We were talking about the business of the university and all the nuts and bolts of things that can sort of distract us sometimes. And I think using his Coast Guard Captain sort of lexicon, which I was getting used to more and more over the course of the year, was steady as she goes. But I think the point that I want to make is that both through the hard work of what the President has done in the entire St. Claude State University community, our support for students will not change. We made that very clear day in and day out, not just this past year, not just the last nine years, but for decades for the length of this university.  That we exist, as the Mayor mentioned, to make the region a better place and make it more prosperous from all aspects, and that's why the university exists. And that commitment will not change. Bringing the university has gone through some challenges, particularly budget and other things in the last couple of years. Just want to collect some thoughts from people from the SQ system or university officials on how President Potter was dealing with those challenges. All of my education has faced some astounding challenges over the last decade. I think it's not a challenge that's only been borne by St. Claude State University. And there are Potter at no time shied away from meeting the challenges. But also never shied away from avoiding expedient solutions to challenges. Always worrying about two things. One, is it good for students? And secondly, if the long run, is it going to be good for the university and this community? This past year the university started re-growing enrollment and the projections. By coincidence, we were reading tomorrow for his performance review. As our review materials over the weekend, the projections are that enrollments will grow again this coming fall. The budget is balanced at St. Claude State University. And the investments are continued to be made in a way of programs, in a way of facilities, in a way of work and partnerships for our students and for this community. Again, every college, university and state is facing huge financial challenges. But enroll led our thinking in how to deal with those challenges that are thinking about where we want to be still five or ten years down the road given the financial challenges that we confront. And it was relentlessly and steadily alive. We have borrowed very high for how it is to address challenges in ways that protect our students. The university is in very sound condition right now. And this leadership team has not been this beat in continuing to serve our students, continuing to serve this community and continuing to build partnerships necessary for prosperity in the region. Is there no further questions? Thank you all for coming. Thank you for being here. Thank you for your support. And that is all for today.


Oh god, it tastes like them trying to make you remember a character you don't care about. Guys, Jeremy here, this is my review for episode 17 of Supernatural Season 13. This was a story-related episode in a sense, but it was thrown into a month or the week episode. Obviously the brothers are still trying to find a way to open up a portal into the other world to get their mother back. I don't know why. And Jack, I do know why. The episode even starts like a filler episode too, because they're just going through books and you're expecting them to be like, wow, we got bupkissed. But then they find out where this little jewel thingy is, and it happens to be in a tunnel, in a cave, with this girl who's been there for a hundred years. Turns out she's actually hiding a little Cthulhu in her. There's this secret society of men of letters who are scorned, who are trying to protect the shame of what their father, their great-great-grandfather, whatever did, by calling on the Cthulhu thing. And this part of the episode isn't that bad.  I literally had almost forgotten that he was still alive.  Then he was what's happening with him, and he's basically found out that working for Walker Texas Ranger is not great. We also find out that he's using Gabriel, who we still don't know how is there. Ketch finds out that it's really shitty to work for Walker Texas Ranger, and then he brings Gabriel to the brothers, who are very, well, not Sam, but Deans, very reluctant to be like, yeah, sure. I don't know how they just don't shoot this motherfucker. Just kill him. Because you know what's going to happen, eventually he's going to have a betrayal.  So while the monster Cthulhu thingy was actually somewhat of an interesting kind of offside story, everything just goes to a halt when it comes to Ketch and Texas Ranger.  While the ending is cool because we're actually starting to get towards the final purpose of the season, we've got what, 18, 19, 20, 21 left? We're going to finally get into a realm where these last four episodes are all going to matter.  It's not a great episode to start it off on. The best part is when it ended because it's like, oh cool, story's going somewhere.  And I just don't know why they keep bringing that character back. He's a terrible character. He's been useless ever since his inception. And yeah, just bad reminders of how bad season 12 was. Anyways guys, that's all from me. I hope you enjoyed this review. If you did, leave a like. If you're interested in more, maybe subscribe. Otherwise, we will be coming into the final four, final five. So let's hope it doesn't suck.


Base's Bomber Agile Combat Employment, it's the ability of the bomber fleet to exercise our flexibility in getting to anywhere in the world so any AOR area of responsibility. It also helps us to demonstrate flexibility and employing combat en route to that AOR or sustaining combat wherever we actually go. Base impacts the United States Air Force as a whole and even our adversaries because now our adversaries have to watch out where we're at at all times because we could be at different multiple different bases throughout the entire world with multiple bombers deterring them and whatever we have to do and not only does it affect them but it affects us not only with manning but logistics equipment and planning and getting equipment throughout all throughout those bases but you know we're doing more with less and definitely projecting our combat effectiveness throughout the entirety of the world. We've used the most minimal amount of equipment most minimal amount of manpower compared comparably to our other deployments and our other TDYs. We brought the bare minimal of what we did who we brought the bare minimal of people and we're so able to accomplish our mission that needed to get done. We had a lot of partners involved in helping the 23rd Bomb Squadron actually demonstrate this base from the Logistics Readiness Squadron from the Com Squadron from our medical professionals as well as the wing leadership was extremely supportive of us the operators and the aircrew were complete professionals the maintenance team they made this happen we had to generate and launch aircraft in negative 10 degree weather and the aircrew that was tough on us but it was extremely hard on maintenance and not only did they get us out here on time they helped load the mines today and they helped green all of our jets the Navy again they helped us build the mines and they or excuse me they built the mines they didn't help us they built the mines here at Edwards Air Force Base they delivered them to us and they helped our maintenance team actually load our mark 62 for our mission tomorrow the importance of the exercise I mean obviously it's important to get this training in not just for the mime and you know on our side for the Navy it helps us to better have our knowledge for our mines basically for our build up and our delivery to the aircraft you get the hands-on training for loading them up to be dropped and it's a really good process for us to see mine and license a lot of stuff we see is just the building of the mines and shipping out of them and not really the load of processes and it just overall helps to increase our camaraderie between the two branches the importance of working with the Navy for this exercise hand-in-hand with the Air Force is now we get to see their processes they can see our processes and get to come together as you know not just not just the Air Force or that it's the Navy now it's we're one team one fight trying to accomplish one mission most important was was our maintenance support for everything but again Edwards was a central and so was the Navy


I'm very happy to be here. I'm Dean of Columbia University School of the Arts and it is more than an honor and more than a joy to get to be with you. Thank you. I'm Maron Alsop, you know, but I will tell you anyway, she's an American conductor and a violinist and she is currently music director of the Baltimore Symphony Orchestra and conductor of honor of the Sao Paulo State Symphony Orchestra and chief conductor of Vienna Radio Symphony Orchestra and so many, so many other things. She's really one of the most renowned conductors in the world. She travels extensively conducting, teaching, advocating for diverse youth groups and for orchestras composed of youth as you saw last night and for women conductors in particular. Those of you who were at the International Call for Unity and Joy concert last night I think will agree that it was one of the great experiences of our lives and I say this as someone whose plane was five hours late and who was on the Davos bus while the concert was happening and watching it on my phone and weeping. I told Maron I'm in the bus and I was just weeping. It was so beautiful with the European Union Youth Orchestra and the choir of the Sao Paulo Symphony and soloists from so many different countries. It was just a statement about what the arts can do, what music can do, what humans can do together. It was so my first question or my first topic to talk about I live in a world of many art forms theater and visual art writing but I have always thought even though it's not my expertise that music of all forms was the most immediate to the human organism that we respond to music it comes right into our bodies, right into our senses, right into our spirit more directly than any other form and also translates across culture more directly and more immediately. So I just as someone who's spent her life living it I just thought I'd start there and ask you your thinking on that. Sure well I think that we're all born hot wired for music. You know when people say to me well oh I'm tone deaf you know or I can't carry tuna I can't sing I really want to go back with them in history to who to that person that told them that because that is not true. Every single human being can sing can feel music we're just it's just and when people also people feel feel sometimes hesitant in coming to enjoy classical music because they don't know enough they don't feel educated enough and I say but that's not you don't need any education because you're human so you can experience the beauty of music and everyone has a song that reminds them of something or a melody and you're transported that's the you know music can it can connect with us so directly it's almost like a dream you know and transport you to another time in your life or another place or another another planet in a way. So my teacher my mentor Leonard Bernstein if you ever watch him there he did the Norton lectures at Harvard and he postulated that the first human word was not spoken it was sung and I agree you know and when you think about kids they're always intoning you know language comes from from singing really you don't just suddenly speak a word you have them you have to really work it through a lot so I think music is just it's part of being human so I think that's why it's able to transcend those boundaries. What you said just now is so correct that music can take you back in time it can it can move you to sometimes very painful things and sometimes very joyful things and there are times when you just can't listen to something because it reminds you of people or a time in your life or a loss it's just so it goes right to pain and then there's music that the minute you hear it everything seems to go away and you just feel elated I always think that music somehow defies gravity in a way that it's like grace you know it just takes away the weightiness you know and you think about you think about when you were a teenager or if you have teenage kids that you know music is a it's a rebellion it's a way of expressing yourself it's a way of uniting you with your peers so I mean it's a very very very powerful medium I think and a way of making you feel that you're not young anymore when you can't relate to the generation the music of a particular new generation when you think wow I just I can't hear that I don't get it right I get it or I don't get it but I don't want to get it or you know something about you just resist it you know it's like whoa why is this happening now yeah definitely um you've spoken about the when you went to a Leonard Bernstein concert before he became your mentor and friend and you were with your father who was a musician and you you just knew I want to do that I want to be a conductor so I'm curious like what you saw that made you think that's what I want to do you know it's I'm always amazed at the musicians that come from I have a very good friend who grew up on a turkey farm and she plays the viola now I I don't know how you get from a turkey farm to playing the viola that to me is really that's something magical I really I was born my both of my parents were professional musicians so you know they didn't necessarily want a child they needed a pianist so that's why I was born and that's why they had you yeah they needed a trio so that was the idea um and and I hated the piano and so make a long story short I I retired from piano when I was six and uh then I uh then they tricked me into playing the violin but luckily I loved playing the violin uh you know and and that made me also understand that for every child there is an instrument so if you played an instrument growing up another thing I'd like to go back with you and you know it didn't click it's because it wasn't your instrument I really believe that's true it was true of the accordion for me I have to say well it's probably a relief for everyone around you too but that was the Polish the Polish thing um so uh and I love playing the violin and I loved I I got pretty good and I when I was about eight I I was in Juilliard pre-college you know no pressure from my parents and um I love playing the orchestra I love the sound and but they the director called my parents in because everyone was complaining about some kid in some little kid in the back of the second violence who was trying to lead the whole orchestra so you know I was already thinking oh this classical music thing is just not going to work out for me it's so many rules to follow even even for me then and luckily my dad took me to a concert shortly thereafter I think I was about nine years old and the guy came out to conduct and he first he was he was wearing a turtleneck which I thought oh that's different and then he turned around and started talking to us about the music and sharing you know why he why we should listen to this piece what was interesting about it uh that was really interesting to me and then he turned around and started jumping around like a crazy person and I thought oh I can be the conductor and not get in any trouble and have fun so that was it for me I was sold and but and that was Leonard Bernstein who was conducting um who then you worked with very much right yeah I mean he eventually I eventually became his student but he was my hero I had two posters on my wall a big one of Leonard Bernstein and then a smaller one of the Beatles so that was that was my musical you know inclination and it it's ironic because um Bernstein loved the Beatles and one night when I was on tour with him he played every single Beatles song for me he knew every word at the piano I wish before cell phones you know I wish I had a but I have it at least in my head there's a video somewhere that I watched when I was trying to learn more about you and he rushes you you're very young and you're conducting and he rushes up on the stage yeah when I finish and he runs up I thought oh I held my breath because I thought did he knock you over almost I mean he was like just came on the stage right yeah he would not done well in the me too moment you know I mean he had no sense of personal space at all whatsoever he was always and he was like he'd be coming everybody like look out here he comes like no kisses okay not yeah he was crazy to jump up on this day all right okay so now um you do a lot of master classes for women conductors and I think they're fascinating and if any of you are interested in this topic at all you should watch them because I learned a lot just conceptually about conducting from watching you and what I was so interested in particularly was with one woman conductor where you stand next to her and you make her breathe with you that she's not breathing correctly so I wish to just talk about that because it made me think well if the orchestra is an organism functioning together is the conductor the breath the lungs is the conductor the head the brain like it it was it's such an interesting idea that if you are not breathing then maybe the orchestra can't breathe but I just wanted to talk about I mean conducting is such a it's such an abstract thing because I'm you know no matter how much I wave my arms I make no sound you know and so so it's completely dependent on trying to enable the people around me to be the best they can be but the minute you lift your arm well usually something happens yeah um whether it's good or I can't you know that that's that's something to debate but um it's all about it's all about body language I mean that's the first thing gesture and I can watch five young conductors and any of you could do it too it would be clearly obvious with this same piece same orchestra and I guarantee you you could also tell sounds completely different and it's it's because of the way they move the way they breathe the way it's very individualistic you know very dependent on all of those things and so breathing is important because if you're going to invite someone to play that is playing a wind instrument or brass instrument if you don't breathe the sound is tight and if your gesture is is harsh the sound is also harsh and the musicians aren't necessarily even aware of this but you can hear it and so I mean it's a complex thing and then of course when you add the societal interpretation of gesture from women which is very different from the same gesture from a man is interpreted very differently than it is from a woman so you know when when my female students will come and conduct and you know sort of dainty like that I said oh no no no can't do that because then it's it's girly or it's lightweight or whatever but when a guy guy does that it's sensitive I mean it's it's I have no I have no judgment on it it's just the way society looks at things differently and when a woman you know really wants to get a big sound you know there's a there's a line that if you cross everybody it's like you know you're called the b word so you have to really figure out does that translate into all languages yes I think so I don't know in German it might be no but I think so it's very it's very interesting and and and also also it's always every day is something new because the organism constantly changes I work with a different orchestra almost every week so it's a different being why do you think there is so much resistance so has been historically to women as conductors what you know is it like women directors of film where it's just a leadership issue that men just simply don't want women at the helm or do you think there's something intrinsic to the nature of music classical music oh no I think it's I really think it's a it's a comfort level I mean this is I'm always asked this question of course I my response usually is well I'm probably not the right person to ask you should ask some of the men that question because for me I you know I want to promote women in this field but I think that as a society it takes a long time for us to be comfortable with role roles especially with different looking people in roles I mean I tried to think back when I was growing up when I was a kid you know it was always two white guys on TV anchoring the news that's what it was and then sort of gradually like this one woman Barbara Walter she came in you know and that was really uncomfortable for a while and then we got over that and they let Jane Paulie through you know what I mean so couple women and then then everybody got comfortable with one man one woman then it then it morphed you know so that we saw more people of color and this and that and now I think it's just it just takes volume of seeing people in certain roles to become comfortable but from my perspective I assumed naively that there would be a lot more women coming into my field as I was going but then five years past in 10 years 15 years I said well this is ridiculous and if I don't do something about it who will change this landscape so in 2002 I started a fellowship for women conductors and I named it after my my non-musical mentor the gentleman that helped me start my first orchestra Tommy Otaki he's a he owned ankline clothing he's not in music at all he didn't even like classical music actually but he liked you you know for some reason and he supported the orchestra and so this fellowship has really I think helped quite a lot because it's very important that the women conducting isn't like anything else you you can't practice it unless you have 20 or 40 friends that come over every day you know there's no instrument so at a large apartment yeah you really you need a lot a lot a lot of beer but so that's a huge challenge so you can't get opportunities and the most important thing to me is that you you have to have the chance to fail in order to become successful and if you only have one chance you know it doesn't go well especially in a profession where it's not predisposed to want you to succeed necessarily so it becomes even more difficult to to fail in public there's that yeah there's that talk also about I mean you're changing the profession so many ways sort of its activist part of your life and and and it's a totality in your life which makes it even more wonderful can you talk about the youth orchestras and how what you've been thinking about that and what motivated that and and then we'll watch a small clip of Sao Paulo oh sure um well I I think it goes back to this you know when I had to play the piano and I hated the piano that's that's part of it um wanting also wanting every kid to have the opportunity to learn a musical instrument and learn an instrument that they liked and also I I'm motivated by wanting to see the same diversity on stage that I see in in my community and that's definitely missing in in the orchestras because not every child has the same opportunity to access you know playing an instrument so when I went to Baltimore in 2007 I um I thought why don't why don't we try to start a program that can give access to these young kids and especially in West Baltimore and so I started with 30 30 kids in one school and now we have 2000 kids playing musical instruments and our our very first class has just graduated from high school it's just graduating from high school and our first or kid it's called orchestra kids um or kid our first or kid was accepted I couldn't believe it to the heart school of music on the flute I mean I thought it would take generations you know forward to really sink in and she sent me a note a couple days ago that she she loved school and she sent me her grades in the email because she made the honor roll the president's list and you know to me this is um this is really important when I see these kids playing I realize that you know it's only it's all about access that's all it is every kid has this capacity every human being has this capacity and it's so unfortunate that we as a society can't create equal opportunity for everyone so let's um watch this clip of um the sapella orchestra I'm not sure what this is is this about the um oh did you I project yes and we're gonna we're gonna shift over to that amazing project which is actually um really brings together I think everything that we've been talking about and and everything you've been doing just strikes me one of the most fabulous projects I think you've heard about almost ever so are are you gonna do it okay it's just a minute little snapshot yeah I want to um I'd like to talk about this project because it's so astounding to me um the symbolism of the ninth symphony uh and the way that it has always been conjured uh in so many different situations in the fall of the Berlin Wall and Tiananmen Square I mean so many times when people want to talk about freedom they they think about that so I wanted to ask you like where this idea to make this global ode to joy and for Beethoven's this 250th even where did it even come from how did it begin as an idea well I think that um you know for me the the themes Beethoven as a as a human being is symbolic for me of of of all that I aspire to I mean someone who someone who suffered I mean he knew in his early 20s that he was losing his hearing and he knew certainly by the time he was 30 years old that it was going to be a very slow progressive inevitable process and I can't imagine can you imagine losing the one thing that makes you complete in that kind of painful way and of course he went through a period of tremendous depression and even wrote a suicide note and to his brothers and somehow found a reason to exist and stay alive and he refused any kind of treatment anything that would um cloud his creative capacity he wouldn't go near and he found the will to really push through this and find more inner strength and start to hear internally you know his own world and this is why I really believe that this is why he was able to transcend any other composer because he wasn't judging it anymore it was all created internally and so by the time he writes his ninth symphony there's a legend legendary story that he was conducting and I guess he it was a disaster because everybody just said just don't look up and you'll be all right don't look at the conductor he was you know because he couldn't hear anything so um but at the end of the piece the mezzo soprano had to turn him around so that he could see the ovation because he couldn't hear it and everyone in the audience then realized that he was completely deaf and to write this music under that circumstance and also to always all of his pieces have the same subtext it's just like any author you know you you write different novels but they all have the same themes always because we are who we are and his themes are about hope and optimism and unity and joy and the things that connect also because I think he felt so isolated as an individual because he was cut off from everybody and and he longed for that connection and this is a piece about connection it's about of course the themes are about joy and the Schiller text which was written the in in the late 1700s but he went back to that text because it had this this theme of of joy and the idea of freedom was really an important concept particularly at that moment you know when when you weren't allowed to really think about this so um also I have to say that when the Berlin Wall came down and my mentor Bernstein was there and gathered an orchestra from around the world and acquire from around the world and change the word um Freud a joy to fry height freedom I thought you know this is emblematic of what Beethoven would have wanted and I think that all of these things together made me think about creating a Beethoven 9th symphony with a text on the same themes but texts that would resonate with different cultures so this is in Portuguese so may not resonate so so well but when we did it in Sao Paulo I could see the connection and maybe last night you could see the connection that the choir had to the text because it's their language when we do it in Baltimore I've had a friend who's a rap artist named wordsmith so we have a text by a rap artist um when we do it in um in Africa it's going to be in Zulu when when we do it in uh Carnegie Hall it's it's by the former poet laureate of the United States so the text change and also what you don't see from that is that we're adding interstitial music between the movements and before the symphony begins to try to tell the story in a way that really brings it close to the people listening it's so it's such an incredible idea because we talked about the Tracy K Smith text that will be in Carnegie Hall and the last part of her text um is asking forgiveness of the earth from humans and it it I think it will bring the house down when people hear it because it's so beautifully written and this notion that you can take something which is so classical which is this theme of our whole event this conversation and make it so immediate and contemporary and flexible because I think the implication of classical is that it's it's set in some way historically set and to take it and show this elasticity and that it can become completely relevant and the illusions to God can be can be completely transformed by other cultures and other languages and I think I would love to be there when it's sung in Zulu in South Africa which is a society that's fought so hard for freedom and it's going to be so moving to people in a way that it would never be if it were sung in in German but you know maybe I mean for me maybe it goes back to being eight years old and you know being told don't don't have so much fun with classical music and and I also think that I think that Beethoven didn't look at his music as a museum piece you know he looked at it as a living breathing reflection of the time he lived in and so I I hope he he's enjoying it I think we're done thank you very much thank you