Time once again for another comedy episode of All-Miss Brooks. All-Miss, many women are faced with the problem of either buying a new coat or making last year's due. All-Miss Brooks, who teaches English at Madison High School, is rather lucky in this respect, as her winter coat is right in style this year. It certainly is. Of course I must admit that there were times in the past ten years when I doubted that the coat would ever be in style again. But after all the wear it's taken, it's pretty much of a wreck. And last week I decided that somehow I had to get myself a new one. I discussed the problem at breakfast Wednesday morning with my landlady. Why don't you try Sherry's department store, Connie? They've got a lovely coat department. They've got lovely prices too, Mrs. Davis. Well, there must be something you can afford that'll keep you warm. Oh, there is. It's just that I don't like to go to school wearing a surplus army blanket. I wish I could help you, dear, but with the holidays to close and all right. Oh, please, Mrs. Davis. I wouldn't think of borrowing from you. Why, if I just had the money I owe you for back rent, I could buy two coats. I wish you wouldn't talk that way, Connie. It makes me feel guilty. I guess you'll just have to make sure. Your old winter coat? Excuse me. Have you seen the old gray thing lately, Mrs. Davis? No, dear, but you keep it. I left it draped over a living room chair last night to air out. If it hasn't rejoined the wolf pack, it's still there. All for heaven's sake. Was that your coat? I'll bring it right in off the clothesline. Off the clothesline? Yes, I mistook it for an old rug this morning. Why, I must have beat that thing for 20 minutes. Well, good. It deserves it. Let's let it hang there until after breakfast. So that's your coat. While I was quacking away, I said to myself, why am I quacking away? This thing isn't really good enough to step on anyway. Now I know I need a new coat. Say, maybe if I wrote my folks a letter explaining my predicament, oh, no, that wouldn't work. Why not? They'd write me explaining theirs. Oh, I'm glad you mentioned letters here. I meant to return a letter to the postman that came three days ago. What kind of a letter? It was addressed to a Mr. Luther Snead in care of Margaret Davis. Now, I know that Margaret Davis lives here because I'm Margaret Davis. But there's certainly no Luther Snead. Oh, but there is, Mrs. Davis. I'm Luther Snead. Oh, maybe I'm going to get you a glass of water, do you? Oh, there's nothing wrong with me, Mrs. Davis. Where's the letter? Right here on the sideboard. I've got to see what it says. Mrs. Davis, I've won. I've won the contest. Good. I always knew you had to do new Luther. Thank you for contest. Did you win? Last Saturday's football contest in the morning just passed. Really? But you get for winning. A gift certificate at Cherry Store for a $75 man's suit. That's nice. Very good health care. You don't understand, Mrs. Davis. The football contest was open only to men. That's why I had to enter under an assumed name. Oh, I didn't think you were so interested in football. Well, I'm not. But Mr. Boyden has been needling me lately about my lack of knowledge of the sport. So to keep him quiet, I decided to prove I knew as much as anybody. Well, he certainly proves it all right. However, did you manage to pick all those winners with a good thick blindfold and your hat pin? Isn't it wonderful, Mrs. Davis? Now I can sell this certificate at the bargain rate to some man and get enough for a down payment on a new winter coat. Of course you can. You can sell it to somebody at school, a teacher, perhaps. Oh, I couldn't afford to sell at that cheese. No, Mrs. Davis. You know, the only one at school who might be able to buy it is Mr. Conklin. Yes, all I'll have to do is to convince him that he needs a new suit badly and I'm sure I can make a deal. I hope so, dear. Would you like some more coffee? No, thanks. I haven't got time. Walter Denton isn't picking me up this morning, so I'd better get going. What's the matter with Walter? Nothing's the matter with him. It's his car. He had a little trouble with a wheel yesterday. A wheel? Yes, it's rolled down the sewer. Is there any position to you? After all, he is the editor of the Madison Monitor. He's a lame-brained dunce. That's what he is. Met. Wanting to start a football contest in the school paper. I'm unalterably opposed to contests of any kind. I consider them a corrupted influence, eroding the minds of young and older-like and distracting people from more useful pursuit. But what was that cheek you were studying last night, Daddy, for when you tore out of the newspaper? I don't know what you're talking about. Don't you remember? It had the names of a lot of colleges on it with numbers after them. Numbers? Yes. It said Illinois by 10 point over Northwestern and Stanford minus 6 over California. Er, the discussion is terminated. I was only perusing that column in an effort to fathom what people saw in such context. Now, I'm quite busy, Harriet, so I'll appreciate it if you'll just go... Come in! ...leave my office at once. My visits are getting shorter all the time. I was speaking to my daughter, Miss Brooks, to you later, sir. All right, Daddy. Goodbye, Miss Brooks. Hello, Harriet. Why, but you're looking well, Mr. Conker. I don't know how you managed to do it, but you always look so chipper in the morning. Thank you. Now, if you'll tell me what it is... I think your suit has a lot to do with it. If you don't mind my saying so, sir, it's my favorite one. In fact, it has been for some time. I'm glad you like it. Now, if... Oh, I'm not alone in the opinion, Miss Conker. Every teacher at Madison who has an ounce of sentiment likes that suit. Sentiment? Yes, sir. You know, there are certain things that we teachers look forward to each day. The old cracked brick walk out front, the old ivy clinging to the old walls, the old initial taps into the old desk, and your suit. Well, I admit, Miss Brooks, that this suit isn't new, but it just so happens that my wife is crazy about it. She told me, and in other times, how much she likes to see me in it. Oh, so do we all, Mr. Conker, and we love to see you in it. And we like to see ourselves in it, too. Many of the time, I've followed you down the hall, powdering my nose. That will do, Miss Brooks. If this suit seems a bit shiny to you, it's only because of the nature of the garment itself. You see, it's a fact. Ain't it the truth? Isn't it? But, after all, why should you care how you look?  Not some wealthy plumber. Information, Miss Brooks, I care a great deal about my appearance. In fact, I was on my way downtown yesterday to see about a new outfit. Oh, now that is a coincidence, Mr. Conker. It just happened. I never got there, of course. Thanks to the involved discussion I got into with Madison's idiotic editor, Walter Denton, imagine that oath wanting to hold a football contest in the monitor. Well, he knows where I stand on such coal-duggery now. Coal-duggery? I consider contests of all types of nothing but a low form of gambling, and newspapers or anyone else who sponsors them are accessories to the delinquency of the community. Moreover, anyone under my jurisdiction, teacher or student who is caught participating will have to answer to me. Now then, why did you stop by my office, Miss Brooks? I just wanted the power of my nose. I thought you might want to tell me about something, some extra words I could do for you. Stop percolating and speak. Oh, what's the certificate you're touching in your hand? What certificate? Oh, let's see there. Hmm, a $75 gift order on the men's clothing department of Sherrys from the morning dispatch and made out to Luther Snead. Miss Brooks, what are you doing with Luther Snead's certificate? Nothing, Mr. Constance. You see, I'm Luther Snead. Yes, sir, that's me, Luther Snead in the flesh. You're not a well-warmer. I don't know how or when, but maybe you've been working too hard? No, sir, it's just a non-depluse. I see. And this gift order, is this some sort of a prize, Miss Brooks? A prize for participating in some obnoxious contest or other? Me? Enter a contest knowing how you feel about it? You did, didn't you? Why are you jumping to conclusions, Mr. Constance? Don't you conceive it is possible that I could receive this gift order for sending in the best poem of the week? Well, it is possible. It is?  But that's what I did. Naturally, I was a little shy about my first writing effort, so I took him of the name. But why a man's name? Well, lots of women have written under men's name. There was George Elliott, George Sand, Edgar Allan Poe. Edgar Allan Poe? His real name was Edna. Now, it's all right with you, sir. I'm still very suspicious of your connection with this certificate, Miss Brooks. But, sir, the only reason I came in here this morning was to sell it as a bargain prize. If you receive this award for anything other than the writing for poems, say, for having entered one of those degrading and nefarious... You want to sell it as a bargain? Yes, sir. Would you give me fifty dollars for it?  Some insidious and distasteful affair? Some character-destroying temptation? I'll give you thirty. What is the worth of me? You wouldn't want to arouse my suspicions again, would you? Now, now, here's the money. And let's keep this little transaction strictly to ourselves. Is that understood? Yes, sir. Good day, Miss Brooks. Just fair, Mr. Concom. A deal like that is enough to make you grow straight. Thirty dollars for an award that... We're using for interrupting, Miss Brooks, but hello. Oh, hello, Walder. Get down to Mr. Concom's office, won't you? I could tell by the way you were talking to yourself. Yes. Well, I've got to get to class, Walder.  So I've heard. Gee, every guy in school enters those dispatch contests. I hope nobody around here won this past week, though. Why? Well, because I was down to Sherry's yesterday to get some sneakers. And it's a photographer there from the dispatch. A photographer? Yes, ma'am. He's there to take a picture of the winner when he shows up to cash his gift certificate. See, the picture will probably land on the front page.  Are you going to faint? That's the best idea I've heard all morning. Move over. Next time came, I met Mr. Boynton in the school cafeteria and poured out my miserable story. He listened attentively. And after careful consideration, Mr. Boynton came through with one of his customary, clear-headed and sympathetic statements. I sure hate to be in your shoes. It would be a little crowded at that. But that's hardly an answer to my problem, Mr. Boynton. Vera, I'm so upset I can't even eat. Nothing should be that upsetting, Miss Brooks. Now, let's see if I've got this thing straight. You won this football contest under an assumed name, right? Right, Luther Smith. And then you sold the gift certificate calling for a man's suit to Mr. Conklin after telling him you received it for sending in a poem, right? Right. You promised to keep the transaction a secret. And now, knowing Mr. Conklin is violently opposed to giveaway games, you learn that a photographer is waiting to take a picture when he goes down to cash in the prize, right? Right. You know something, Miss Brooks? What? Now I can't eat either. Oh, if only I didn't sell the certificate to him. It's my feeling exactly. Well, certainly you could have thought of some faculty member who might need a new suit. Didn't it occur to you that I might be open to a suggestion? Right. After four years, no. That is, I didn't think you'd want to spend the money. Well, as I see it, there's only one way out for you, Miss Brooks. All right. You hold the steak knife and I'll call on it. No, no, no. You've got to get the certificate back from Mr. Conklin. He's just starting his lunch over by the window. But he thinks he got a great bargain at $30. He'll never sell it back to me. There are other ways of getting things, Miss Brooks. Let's see. He's probably got the slip in his inside coat pocket. All you've got to do is get it out of there without his knowledge, and your worries are over. At least for five years, so my parole comes up. You can return his money later. Meanwhile, you have your prize back. Yes, but if I go down to Sherry's and get my picture taken, you'll know I lied about the poem. And if I don't go down, I'm out of $30. Well, not necessarily. I'll take the certificate off your hands. You will, Mr. Martin? Well, certainly. I'll be happy to give you $20 for it. But we haven't time for financial details. You've got to get your hands on Mr. Coughlin's coat. Yes, but how? Well, right in front of him is a plate of food, cup of coffee, and so forth. If something accidentally spilled on him, one could volunteer to have his coat cleaned for him. Couldn't one? One could do the best cleaning job one ever saw. Mr. Martin, your period of indoctrination is over. You've made the varsity. Now wait here and keep your fingers crossed. Good luck, Miss Brooks. Good afternoon, Mr. Coughlin.  So far. Have you and Mr. Martin finished yours? Oh, did you see us all the way across the room? I did. Your conspiratorial hubble was unmistakable. Conspiratorial? It looked like a meeting of the underground. That's a hot one, Mr. Coughlin. May I sit down? You may sit down on one condition, Mr. Coughlin. What's that? That you do not spill anything on my coat and then offer to clean it in a feeble attempt to regain the certificate you sold me this morning because you can get more money for it elsewhere. Yeah. Well, bye. What are we doing in Sherry's department store? We're here to carry out a last-ditch scheme called Operation Get Rid of Photography. Now if Mr. Coughlin comes down here and his picture appears in the...wait a minute. That must be the man from the dispatch over by the clothing dummy. Which one? He's the one with the camera. Look, Mr. Martin, I'll go over first.  But, Miss Brooks, what do I do when I... Just react normally, Mr. Martin, and leave the rest to me. See you in a few moments. Mr. Martin, pardon me, but could you tell me where I can find the lady's coast department?  Shuffle up, lady. I'm married. Oh, I see you have a camera with you. You must be a newspaper photographer. I can't think of anything more fascinating than being a newspaper photographer. I've been married for 18 years. It's such interesting work. I've got three kids. You know, I've always wanted to learn something about photography. I bet a sweet, patient, intelligent person like yourself could teach me plenty. Two of them are bigger than I am. Look, lady, I'm here to take a picture for the dispatch. That's my job, and that's all I can do. Mr. Boynton, thank heavens you got here in time to protect me. To protect you from what? From this masher, that's what. Masher? Masher? This bus next slide to get fresh with me. Fresh? Fresh? Let's not stand around like the Andrews sisters. Stranger made advances, Mr. Boynton. What did he do, Miss Brooks? He asked me for my phone number. He did? I did. If he did, Mr. Boynton, can I just stand there doing nothing? I'm sorry. I'm sorry. The number is Ridgeview 844. Phone number? Are you going to stand idly by and let these insults go on event? Don't you think you ought to ask this man to go out in the back with you for a while, Mr. Boynton? Out in the back? Yes. If you don't want to trash him within an inch of his life, you could at least break his camera. But that's the way he makes his living. Oh. Well, if you don't want to defend my honor, I'll just have to defend it myself. Come on, fresh guy. Let's go out in the back of the store. Not me. You've got the rich on me. Miss Brooks and Mr. Boynton. Hello, Harriet. How are you, Mr. Conklin? Fine, thanks, Morton. How do you, Mr. Brooks? Harriet is going to help me select the suit that's coming to me on this gift certificate that I just... Mr. Conklin, I'd like you to meet the photographer from the Morning Dispatch. Photographer from the Morning Dispatch, Mr. Conklin, principal of Madison High School. Mr. Conklin, principal of Madison High School, the photographer from the Morning Dispatch. How do you do? Oh, Mr. Conklin. Could you tell me who this lady is? Lady? Oh! Oh, Miss Brooks. She's a teacher at Madison High. No wonder I'm glad I never got past grammar school. Mr. Conklin, I'm supposed to get the picture of the winner of last week's football contest. If you've got a certificate... I do not participate in any moronic contest, young man. This certificate happens to be made out to Luther Snead. Yes, and I'm Luther Snead. You could have formed me. But I'm not here to take Luther Snead's picture. You're not? No, that's the name that got a duplicate prize. He, she, or it was the only one in the history of the contest who ever picked every single game wrong. Wrong? I knew that hat pin was crooked. I mean, there must be some mistake. When I wrote my poem... And let's stop this gibberish, if you please. Tell me, Mr. Photographer, who was the actual winner of last week's football contest? A guy named Geronimo Crowninchield. Geronimo Crowninchield? But that's the name on the letter that came to our house. Where is it, child? Let's have it handed over. Hand it over quick. Well, here it is, Daddy. Will you give it to the postman? Don't bet on it. I'll just hang on to this for a while, Harriet. You never know when Geronimo will return to our house. Return? Certainly. He was that friend of mine from out where. Friend? Don't you remember with all those scouts dangling from his belt? He was the one who spent the week in our spare room, Harriet. But, Daddy, I've been sleeping in our spare room for months now. I meant the spare room over the garage. I'd like to get this straightened out. One minute, please. Daddy, there's no spare room over the garage. Here is, in particular, where he sleeps. Are you Geronimo? I said, are you Geronimo? Oh! Why did you kick my ankle, Miss Brooke?  Oh, Geronimo, you had his letter. You mean Mr. Boynton? No, Geronimo Crowninchield is Mr. Boynton. He just teaches under that name. Now just a moment. Another Geronimo Crowninchield, Mr. Conklin. Now, may I remind you that the photographer is waiting to take a picture of the winner of the football contest. And if your picture is snapped with him, it will not only appear on the front page of the dispatch, but will be reprinted in the Madison Monitor. And anyone who has come out so violently against contest... Enough! Harriet, hand Geronimo his letter. Yes, Daddy. If you will all excuse me now, I'd like to have a little chat with my daughter. Goodbye, Harriet. Goodbye, Mr. Boynton. Come along, you dear, dear... This is anything less of you. Now about this picture... Look, lady, I'm confused. Luther Snead is a woman. There are a minimum of two Geronimo Crowninchields, and I almost got clobbered for just getting out of bed today. If my editor wants any pictures in this joint, he can get them himself. But I'd like to explain it. Don't bother. Just wear your certificate in good health.  It's just as well as no publicity, Mr. Boynton. It would only inflame Geronimo Conklin. Well, I still don't know exactly what happened, but the certificate called for a $75 suit, Miss Brooks, and since I owe it all to your effort, I'm going to give you $25 in cash. $25?  You could kiss me and give me $25? Of course. Well, better kiss me first. You may have change coming.


So, thank you very much for coming here. This is Mike's in my first time presenting at DrupalCon, so we're noobs here, so hopefully we'll have some good stuff for you. So this is going to be kind of an architectural overview of a lot of the different things and considerations in actually using Drupal to do digital science. Just a quick introduction. My name is Adam Weingarten. I'm a technical architect over at Acquia in our professional services group. So I help do discoveries, estimations, project executions, supervising rollouts, and just keeping large scale websites up and running and have some interesting stories to share today. And I'm Mike Madison. I'm also a technical architect at Acquia and I'm particularly excited about this talk because I have been living and breathing digital signs for the last six months. So all signs all the time and I get to share some of that with you guys here today. And he has me to thank for it. I told Mike that when he started this project he would either love me or hate me for the architecture I left him with at the beginning of the project and he's still talking to me and I'm not quite sure why, but yeah, so you'll get some of the information about that. So why are we here today? We're here to talk about some next generation digital experiences that go beyond the normal standard web browser. So you're no longer accessing things necessarily with a keyboard, with a mouse. You aren't just able to reload things. We're hitting data and consuming data in ways that we're just not used to for those of us who are web developers. And we're not used to thinking about it. So what could those different things look like? So you could have a voice interface, something like a Siri, a Amazon dot, I love mine, Cortana. So all these voice aids have become really, really popular and we're seeing a huge emergence of them online and with different retailers, different vendors, different institutions are all rushing to create these. We also might have a touch screen on a car or an airplane, like another type of digital experience that could be powered by a website, a mall kiosk. The other day I was walking around the Pentagon City Mall outside of Washington and they have signs all over where you can actually interact with the sign to get information about what's going on. So they're not just printing anymore, you can actually go reach up and touch. And it's a little bit different than a normal browsing experience. And finally, you have public transit.  That's another place where you see information that could be powered by a web server. So ultimately, why are we really here? We're not here to talk about digital experiences in the abstract. We're here to talk about signs. That's the purpose. That's what we're here for. So today what we're really going to try and give you is sort of the overview of the entire process, as Adam said, this is more an architectural overview than like a developer's deep dive. So if you don't have a great deal of experience developing for Drupal or PHP, that is perfectly all right. What we are going to look at though is quite a long list of things that we've had to take into consideration as we're actually building a system to do what we're talking about here today, right? So some of this is going to be very Drupal centric. Some of this is going to be much more sort of broad and general guidelines. But the important thing is that if you either have a digital signage system now that perhaps isn't powered by Drupal, or if you're thinking about moving in that direction at some point in the future, hopefully this is going to give you a solid starting point that you could go out and approach this on your own. One of the first things that I always get asked when I sort of describe what I'm working on in this sort of scenario is people ask me, well, why the hell are you even using Drupal? I mean, that just doesn't sort of immediately click. And that's a valid question, right? It was my first reaction when I got on this project. Someone told me we're using Drupal. I was like, why are we doing this? Why aren't we doing something else? And we're not just talking about this because it's DrupalCon, right? I mean, there is a legitimate use case for using Drupal in this picture. But, I mean, just to play devil's advocate for a moment, right? I mean, if you really wanted to, you could go out and build a really cool angular app and just do it in angular, right? Or whatever else. I mean, that is a totally legitimate use case, as is any other modern website, right? I mean, you don't really need Drupal to build a website. But, as we all know, each of these technologies gives all of the developers building them a really slick experience, but all of the users that actually have to then maintain what you're building a really terrible user experience. And this actually is a fascinating problem with signs because literally the only users that are going to be interacting with anything other than staring at your sign are your people that are managing the content on the sign. So in many ways, we're talking about the most critical section of people here being able to log in and actually manage these devices. So just building them something in one of these other technologies while perhaps easier on the developer is ultimately not going to solve any problems for the end content people. And, you know, I'm sure that your stakeholders won't be very happy if you have built them a sign that can't ever be changed. If all it does is do one thing and then the next week they decide that they want to do something else, they won't be very happy if it's going to take months and months of development to do the next other thing. They want to be able to have some flexibility and you should think about that. That's why we're doing it digitally, right? Yeah, that's right. We could just print it out. You might be onto something there. So, you know, obviously this is kind of an obvious statement, but I mean Drupal does provide great user experience for managing content and even in a headless world, right, if it's about React or Angular or something else, actually displaying the end result, there's a lot that your content creator can do by logging into a Drupal UI and using those forms. So, it's important to go back to why do we use Drupal to manage content again? So, and most of the people in this room, I expect know this information, but we're reiterating it mostly so that you can take it to the people that you have to talk to and you have to justify to remind them why you're doing this and why you're taking this technical approach. So, first thing that we do with Drupal is we do content modeling.  Drupal does a great job of that. It has access controls and permissions, so you can control who can do what to which node that you have created. So, some people can edit, some people can't, some people can publish and make things live, other people cannot. You have revisioning. So, one person can get started, they can create a draft, the draft is ready to be published, maybe at a certain time, so you can keep tabs on all those things. We have a great diverse community here, so it's no surprise that translation is really, really important in Drupal and especially in Drupal 8. So, we have some really robust tools in D8 to help us with those. And redoing all of these things that Drupal gives us is really, really expensive to do someplace else. So, the minute that you start with Drupal, you already have a leg up on a lot of other solutions. At the end of the day, it lets normal people actually interact with websites. That's why we use our content management system and that's why we're not just editing straight up HTML anymore. I mean, this is a silly slide in some ways because you guys have all seen this, it's really obvious, like this is a node edit screen in D8, but the fact that we have a revision message, we have a wissy wig where users can do stuff, we have titles, we have drop downs, people can upload files, that's all really, really powerful and ultimately, all of this stuff is about content. So, let's look at an example. So, we're in Baltimore, I'm from D.C., so I figured I'll grab the D.C. subway system as a great example to talk through. So, you look at a map here and there are different color lines. So, our content model starts with subway lines. The lines have direction, you can go in two different ways. So, if we're looking at the red line in your local, you might go to Shady Grove or you may go in the direction of Glenmont. You also notice that there are stations. So, that might be another part of our content model.  Or, you know, go to Farragut North and I don't see the lobbyist up there. And then finally, trains have, train stations have platforms. So, maybe you have to go to one platform or another, maybe different platforms serve as different lines and different directions. So, all of these things make up your content model. And D8 makes it really, really easy to syndicate all of this data using services. So, you know, you can use the built-in services or you can also use, you know, something like JSON API to get the data out to some other system like an Angular or something else to consume it. So, as with the modern web, we're constantly seeing, right? Drupal is not always going to be the only data that you have, right? I mean, you may have some additional data coming from other places. And I mean, Drupal may not even know about some of that other content, right? I mean, Drupal may not even touch it. You know, that's okay. But the really cool thing about the content model that Adam was just talking about is you can still use Drupal to inform the parsing of that data. So, you know, let's imagine for a moment that we might want to use, right? So maybe we're going to go get data from social media. That can be incredibly dangerous if you're not appropriately filtering and reviewing it before it goes up on your sign. There's lots of fairly famous debacles in that arena. But still very powerful data that can be very useful on a sign. You could be talking about train or other public transit data. You could be talking about weather data. Stocks, top news, et cetera. And each of these different items could actually represent a data provider for your screens. And in fact, the way we handle this in Drupal is we literally have a provider API that can go out and talk to each of these different sources at some interval and get the data from them. We parse that data based on our content model, meaning that if there's news that is affecting a particular area, perhaps it's news that is affecting a particular train line, in Adam's example, we would want to ship that data to an appropriate screen or set of screens based on our content model. We happen to be doing most of that with object-oriented PHP, but pick your poison. You can do that in a Drupal module. You can do that with Node.js. You can do that with many different technologies. The important thing, though, with all of those providers, with all of that data, is that you want to pull data for the entire U.S. if you're just trying to show the temperature in Baltimore. You don't necessarily want to show news for some other convention than Drupalcon to people that are attending Drupalcon. So data without context is meaningless data. So this is where that Drupal content model can really come in as part of that the parsing as the providers actually go out and get the data. The content model can actually inform that parsing makes sure that it gets to the right place. So if we're talking about our trains, let's say, for example, we have an arrival feed that's actually monitoring the red line as it moves through Washington, D.C. As that train is coming into a particular station or approaching a particular platform, we can make sure that the signs on that platform get notified, hey, the train is three minutes away. It's two minutes away. It's arriving now. That data is only relevant to that platform. And we can use all of this to make sure that the signs know when some data, whether it's the arrival or news, or something else has changed. In our example, we're going to go a little farther and just talk a little bit about how this works. So we actually use Drush to go out and get our data. So each of these providers gets wired into a Drush script. Drush runs and processes. We'll talk about that in a moment. Since we're using Drupal to go out and get all of this data, that lets us store all of our credentials on the Drupal side. That's much more secure than having 10,000 screens that have credentials embedded in them. And it also lets us be very smart about our APIs in terms of rate limiting and how many times we actually go out and ask for this data. We'll talk about that here in a little bit. Caching is both critical and incredibly difficult when you're talking about signs. It's critical because you can't necessarily hit an API 10,000 times a minute and expect it to stay up, but a sign is only relevant if it has valid data. So the whole point of doing like a CDN or a caching model is to increase performance, but it does that by storing data. And if we're talking about timely data, a cache kind of immediately defeats that purpose. So you want to be smart about where you cache. You will have to cache some things, but you can't cache everything. Or again, you may as well just print out something and hang it on the wall. It's not going to be up to date anymore. And then as I said, we do parse and normalize the data to make sure that the right data is getting to the right places. Question I got fairly frequently is if you have CRON, how do you make sure that Drush is actually running fast enough? For those of you who are more technical in the room, you run CRON like once a minute, best case. What we actually do is we kick off our CRON jobs and then we let Drush actually take over from there and just loop, loop, loop, loop. And every time we do a complete loop, Drush is actually going out, getting the data, loading our cached content model, separating the data based on that content model, and then pushing data out to the appropriate signage. And I do want to throw a warning out there, right? This assumes that what you're doing can run very quickly. If you're parsing data for thousands and thousands of screens and you want that to happen in like near real time, you have to have a script that can run very, very, very quickly. I think we're running ours 20 times a minute just for context. That's for about 3,000 signs. So speed is critical. And again, caching can help you in this scenario. So ultimately, one of the bigger challenges is getting data to your signs. So, you know, we have all this stuff in Drupal. How do we get it out? There are two ways that we can do this. We can push or we can pull. So the most traditional model on the web is pull. So you initiate a request. The request goes to the server. The server then responds. And, you know, we can generalize that for all the signs. So you have every single sign can just be on a loop that just goes and asks for help.  There are many reasons why pull model is not ideal. There is a lot of traffic. Imagine that you're on a road trip with your kids who are hopped up on sugar and they're really, really bored and they're asking you, are we there yet? Are we there yet? Are we there yet? That's what pulling is like. So you have your signs knocking on the servers every second saying, do you have something new? Do you have something new? Not ideal. It means, first off, that the devices or the kids are running kind of hot. They're excited. They're doing stuff. They're taking a lot of energy, sugar, whatever you want to call it. So it puts more load on the devices. It also puts some load on your servers. They can only handle so much attention before they snap. And this can actually mimic a DDoS attack, ironically enough. If you have a broad enough network of servers who are all polling at once, maybe your web servers aren't robust enough to handle that much traffic. It also makes it really, really difficult to employ a WAF because the WAF may not be able to distinguish between the polling model and legitimate traffic. From its point of view, you may have a whole network of bots that are just hammering you. So that isn't what we want to do. So what is the goal? Ideally, we want to send data from lots of APIs to lots of devices somehow in near real time. How do we do it? So this is what it would look like. We would get data from Facebook, from Twitter, or weather, or train arrivals. We process it somehow with that content model that we talked about. And then we would send data out based on context. So if Shana is waiting on the red line, we might send the screen that she's looking at, a notification of the latest red line arrival times. If Moe is waiting on the blue line, as there are updates to the blue line screen, we might send those out. Let's say that there's flooding on the blue line. Maybe we could aggregate some information from social media and send that out to the blue line screen so Moe knows what different things he can do. Now there's problems with data in real time. The first one is caching. There are two major problems in computer science. One is how do you name things? The other is caching. It is always a problem. So if, you know, typically on a website, we recommend minimum 10 minutes, a 10-minute TTL for cache. Generally, often it's an hour, six hours. With Drupal 8, often we're even going higher to 24 hours to a year. It gets in the way if you're trying to do real time. So that means you can't cache. You can't buffer the data from your web server as much. Ultimately, you want the science to be current. So you want them to get the latest stuff. There's no interactivity. So they have to just work. If something goes wrong, you can't be there to hit the refresh button. It has to just happen without you, reliably. If it doesn't, people aren't going to be very happy with you. So what's our solution? So we are looking at... So we use web sockets to solve this problem. So what is a web socket? So a web socket really is just like a TCP connection. It's a two-way connection. It allows this near-instantaneous communication between some server and some client. It can be shared between devices. So if multiple devices are subscribed to a web socket network, you can broadcast data out to them. And it can be bidirectional, too. So some services like Slack, for example, can apply on web sockets to send data back and forth. So... And the most important part is it scales really, really well. And there are a lot of providers that do this. So there's PubNub, there's Pusher, there's Amazon, there's Firebase, which is Google. And, you know, you can use Drupal to send data through one of these web socket channels. And it can then multiply that data and send it out to all the relevant devices it needs to. So it's really important to get data to all those people out there. So let's take a look at this in a more practical example. And we're going to happen here to talk about the Amazon Internet of Things service. We've got some experience with that. It may not be the perfect fit for everybody, but this model is pretty consistent with web sockets overall. So let's say we have some number of devices that we want to install over a geographically large area, maybe a big city. Each of these devices will form a connection back to that web socket. And in the Amazon speak, they actually connect into something called a topic. Topics are that sort of bi-directional communication mechanism that Adam was just talking about. And you can actually have multiple signs connected to a single topic. So if you have a couple of signs that are right next to each other or close together, they can all be on the same topic. So when you push the data to one place, it instantly propagates to all those signs. Or you can have each device on its own entirely separate topic. That way you have more specific targeting for your messaging. We already talked a little bit about Drupal going out and getting data. So in this model, Drupal is going to subscribe to several different data APIs where it's going to be doing that constant parsing and receiving of data that we were talking about a moment ago. And then Drupal is actually going to push JSON data out to the web socket. At this point, Drupal is sort of your gatekeeper of where it's going to go because we've got our content model that tells us what's relevant. And we will push out to the topics from Drupal and the topics themselves will distribute to the signs. So that actually might look something kind of like this. So in this case, we have five devices. Those five devices have subscribed to three different topics. One is that we have some overlap, some devices are sharing topics. And then we have two different data sources. And you can imagine as time goes on, these data sources are going to begin spitting out new data. And depending on what you're subscribed to, depending on how frequently you need it, that could be once every couple of days, that could be once every five seconds. So obviously your data is going to dictate how often this changes. But when it does change, so sorry for the red on black here, the source one in this example has actually updated. Drupal is going to get that data. It's going to parse the data. In this case, it's going to realize that topics one and two care about that update, but topic three doesn't. So that new data will be pushed out to devices one, two, and three via the first two topics. And devices four and five won't change. Whatever was showing up on them would stay the same. And as these two sources start propagating additional data, as Drupal parses the data, now Drupal sort of dictates which tube the mail gets shoved down. And as soon as it goes down that tube, it shows up on the screen. And you might also think about it as like a television channel or a radio channel. This is a tool that we can use to broadcast to different places. So maybe one message gets sent across channel five, and maybe a different one gets sent across channel seven. So depending on who you're tuned into, you get a different story. The important thing about this model is that it's really fast. Like really fast. You can get data from the source to the device in a couple of seconds usually. So granted, not all data needs to happen that quickly. That's fine. But it can if you want it to. This also gives you a very high degree of granularity. So let's imagine we all get up right now and walk out into this main hallway and somebody's installed 15 signs down the hall. In this model, we could actually have an evacuation plan for the convention center that is highly granular. First sign says emergency evacuate. Second sign says go 100 yards. Next one says go 75 yards. Next one says go left. Next one says go down the stairs. Like you can actually target each individual screen for that messaging. And remember, you've got Drupal behind it so that you don't need a developer to do that, right? You turn it over to your communications team. You turn it over to your emergency management team. You turn it over to somebody that's never used Drupal before. That's fine. They still have that really simple user interface where they can go through and use this incredibly complicated model. The downside to this is we actually have a new problem. And that problem is that for this to work, Drupal actually doesn't just need a content model. Drupal also needs a device model. For Drupal to know which of those signs gets which of those messages, Drupal needs to know about all those signs. So in our content metal so far, we've talked a lot about Drupal parsing and receiving the data. We've talked about actually setting up the content model itself. But we haven't really talked at all about what these devices can do or where they should go. So there's three big questions that we need to think about with the devices. So the first one obviously is which devices actually care about which data. The second one is what data should that format be presented in, right? If we're talking about this cell phone versus that, a big screen, that format's going to change pretty significantly based on the device size. And finally, we've got to make sure that the right devices are getting the right data. We're going to talk about each of these in a moment. So let's think about which devices care about which data. A few things to think about here, right? So if we're still working with our DC Metro example, if you're talking about a screen on a platform and there's trains going by, what direction are those trains going? That's important, right? We need to have context for that data. What platform is the device on? We don't want to tell somebody about green-line trains when the platform you're on only services red-line trains. That's kind of a no-brainer, but it's important. And what station is the platform in?  I mean, this has been happening for what, the last year and a half now? Is there actually fixing tracks and trying to stop things from catching on fire? Where they will actually shut down stations and do maintenance for a period of time, and then they'll start it back up again. So you might actually need to send a message to an entire station. Or, you know, perhaps an entire route. And, you know, when you're thinking about an architecture, when you're thinking about content modeling, a lot of that relationship between the different content components is really critical. And here you can see how, you know, different pieces of that content hierarchy actually can fit together. We've started talking about something new here very recently, messaging, right? How do you target messages to these different screens? And when your messages are contextually aware of the rest of your content model, you can target any individual screen, or a platform, or anything else in the model. So the way we handle this is we actually create additional content types for not only the content model, but for our devices. So when we actually go in and add a new device into this system, we're creating a node in Drupal for that device, so we can capture additional metadata. The entity references that we're using to create the hierarchy in Drupal anyway can not only be used for parsing the data, but now it can be used to actually target and place messages on devices. We can use the metadata that we've got for reporting or dashboards for our content team. And as I said, we can use this to help target messaging. Another word of caution, fully bootstrapping Drupal to actually take advantage of all this content is really slow, right?  So this is actually a great place to cache. What we do is we actually take a snapshot at any given time of our entire screen inventory. That way we don't have to query 3,000-plus nodes every time we want to use it. The only time we ever invalidate and update that cache is when a screen changes or a screen gets added or a screen gets removed. So our parsing can go in and just grab that complete cache once done, doesn't have to query for each thing every time. And again, that's how we get a lot of our optimization and speed. So we talked about format a little bit. A few things here. So how big is the device? If you're lucky, your signs are all the same size. If you're not lucky, they may be the same width, but different heights. Maybe some of them are vertical. Maybe you have... One of our case studies we'll talk about here in a little bit is for a retail store, and they literally have every size of cell phone, every size tablet, video walls, and TV screens that they have to maintain using a system like this. So I mean, at that point, you're basically talking responsive design anyway. What direction is the screen facing? So my emergency evacuation example is only valid if the screen is telling you to walk the right direction. So we have to know where the screen is and what direction the sign is facing. And again, language. Drupal handles multilingual really well, understanding where that sign is placed geographically can help make sure that you're targeting the right language to the right screen at the right time. This last one is an interesting problem. So the advantage of using some of these services that we mentioned earlier, like Amazon, Google, et cetera, is that they just provide all this technology for you. The downside is you do have to pay for it. And most of them charge you based on message volume. So having a system that's wide open to the world, well, cool, can end up costing you a lot of money. So making sure that the right devices are getting data and making sure that only your devices are getting data are both really important. We actually can generate a whitelist using the metadata that we capture in Drupal. You can, or should, make sure that there's additional authentication, not only for your devices, but for your users. And we strongly, strongly recommend two-factor authentication to make sure that nobody's able to compromise your Drupal system to get in and deface signs. I'll let Adam talk a little bit more about security.  It's pretty exciting. Most of the time we only get to do websites, like we're banging away on a computer. I mean, it's kind of a very, very particular way of looking at things. So it's in the real world, and now everyone wants to hack it. Like, you have just put a giant bull's eye on your back. So you need to be a little bit wary of all of that. So, give your hardware some love. This is a great place to start. Embedded devices have extremely poor security records. Every single week you hear about different IoT devices being hacked, you hear about botnets. So make sure you don't take them for granted. Devices, routership with default passwords. Change them. There are voting devices that people have used where I think the password is one, two, three, four, five. This is voting. So make sure you look at those. Restrict the physical access. If you have a sign somewhere, you know, lock it down. Make sure someone can't go and access the USB ports or the ethernet connectors. It seems obvious, but you're dealing with a whole lot more than you usually have to worry about with a laptop. The other thing you need to remember is your hardware isn't just hardware. Hardware needs patches. Make sure that if you are buying hardware that your vendor actually releases patches on a regular basis. If they don't, that may be a red flag that you're buying hardware that may not be supported or that you may not have confidence in its long-term security. Make sure you stay on top of those updates and have a plan to make sure you can deploy them quickly when they come out.  And if you have a high-profile sign, people are going to want to go for it.  And always remember, if you can connect it to the interwebs, you can hack it. Even a TV, even if you go to Best Buy and go and buy a brand new Samsung Vizio Sony TV, that's, you know, if it has an ethernet port or it has Wi-Fi, it's running software. That software can be compromised. So, no matter what it is, you need to think about it. So, it's... You need to not just worry about that, but you also need to worry about the source data feeding your sign. So, you know, we've talked a little about securing the hardware. We've talked a little about securing Drupal, but now we're talking about the data that's going into Drupal. That's a really good backdoor to get data onto your sign. So, it needs to be at least as secure as the rest of your stack. So, validate your data and audit it, too. So, imagine that you are feeding data from Twitter or Facebook, and someone compromises your Twitter account. Well, now they have the ability to get data onto your sign. Congratulations. You just said something really unfortunate, and you had a venue to publish it to everyone. 2017, SSL everywhere. No one wants a man in the middle of attack. It's a great way to vandalize your site. It's a go-live blocker. You will not pass. Yeah. We feel strongly about that one. And at the end of the day, just remember, it's not paranoia if they're really out to get you. And in case you were wondering, they are. So, we've alluded a lot today to the fact that this is really backwards from a normal website, right? There's nobody actually sitting here driving this thing. So, if you have a problem, what do you do? Right? I live on the other side of the country from the signs I'm working on. I mean, do I get on a plane to go reboot a sign every time it goes down? I mean, that's not super achievable. So, what you really want to think about with your, you know, building your sign, some of this can be done in your front end, some of this can be done on your hardware itself, some of it can be done multiple places, is how to get out of trouble when you get into trouble. So, a really easy one is what happens if you pull one of your data providers and it doesn't have data to give you? Does your whole sign go down? Do you show an error screen? Do you show the normal user interface without data? I mean, those are all valid, I suppose, but you need to think through what happens when there is no data, because sooner or later, there's not going to be any data. What happens if the internet goes down and your device relies on the internet, right? These are just the sorts of things that you have to think through that you don't usually have to think about with a normal website. And, you know, I think the most important thing here is that if your screen shows a lovely blue screen of death, somebody's going to notice, somebody's going to take pictures of it, and it's going to be on social media, and you're going to look silly. So, you know, fault tolerance is definitely one of those things that treads very closely to security, because, well, I don't know if you consider that a security incident, it might be. But making sure that your sign can autonomously recover from as many things as possible is really critical. And whoever's testing your sign should absolutely be running through as many scenarios as you could possibly think of to try and handle these sorts of situations. We actually ran into an issue some time ago where we did not do this. So, Chrome ships with this really cool aw snap picture. And when Chrome crashes, Chrome's way of handling that gracefully is by showing you this, instead of, you know, a broken web page. And when that is within view of thousands of people, that's not awesome. So, in this example, what we actually did is we used an open source plugin for Chrome, and we basically overrode the default behavior in the browser. So if Chrome tried to crash, we would instead just reload the page to update the connection. And if it didn't recover after the reload, then it would basically just go to a standby page with a clock. And even though no, this isn't Drupal, this is still an open source solution to a problem that you can certainly go in and begin overriding some of those behaviors. So we definitely encourage you to think about that fault recovery. Sometimes you can find a solution that's 90% of the way there before you write a line of code that will absolutely help you if it happens. So one of the next things that's really important to think about when you're doing these things is support. We've just outlined a lot of fairly complex stacks and feeds and pieces that are coming together. And troubleshooting, that's really, really hard.   And, you know, what's the problem? Who knows? It could be, is it your web sockets? Is it your web servers? Is it the feeds? Where's the problem? So let's pretend you didn't see the presentation and you built a sign that uses Angular to pull APIs in real time. And you didn't load test any servers before launch. You added 20 more screens into production. Lots of screens, all polling, all knocking on the door, lots of kids. Kids are loud. All of your screens then lose data simultaneously. They just, they all go down. So what happened? How do you troubleshoot that? What do you do? Did the server crash? Did one of the APIs crash? Who knows? So, you know, make sure that you understand the architecture. Make sure that support understands the architecture. And make sure that they know what the warning signs are when a problem happens. You know, they need to be able to understand it and draw conclusions. You know, and have an escalation plan ahead of time. Know who owns which API. Know who to call when something, you know, totally goes wrong. And it will. And know what you can and can't fix. And figure that out before something really, really horrible happens. You know, maybe there's a feed somewhere that you can't touch. And if it goes down, you need to be prepared for it. You don't have control over everything. The world's a complicated place. And make sure you load test. Load testing is critical. You know, make sure you can handle it. Mirror the production hardware. Including any of your dependent APIs if possible. You want to make sure that anything that you're relying on can handle it. I actually did load testing a few years ago on a system. And the system itself could handle 500 plus concurrent connections. It wasn't going to be used that much. But one of our critical APIs could only handle five. So thankfully we figured that out before we went live. And you just remember that, you know, your source APIs, like Mike said, are not, may not be as robust as your main site. And make sure that they know that they should not make changes without notifying your team. Yeah. So we have a couple of quick case studies to run through to talk about. So, yeah, and we want to make sure and leave some time for questions as well. So the two sides of this coin we're going to talk about actually are interesting. The first one is lots of devices. Like tens of thousands of devices. But in this model actually they're mostly static data. So we're going to download some data on them and it's not going to change that frequently. The other one is not as many devices, only a few thousand devices, but all of those devices have to get data in real time. And thankfully the methodologies and the approach that we talked about today can actually get you most of the way to handling both of these scenarios. So let's talk about lots of devices with mostly static data. So in this case let's imagine that we're talking about a retail store. Maybe you walk into a Best Buy, or they always have media playing everywhere, wall to wall media. And historically many of these places literally have like a DVD player sitting behind a TV someplace running all of these. Let's imagine we're going to do it our way. All of this content is media for promotion. They want to show off the devices. Would you buy a TV if three quarters of the thing was like sideways and off the side of the screen? No. I mean would you buy a cell phone if it couldn't even play demo content? Probably not. So it's really critical, especially in a retail environment, that this stuff is perfectly tailored to each of the devices that it's going to play on. There's some challenges in this model for sure. In this case stores are actually really far apart. We could be talking about every Verizon store in North America. That's a lot of stores and they're really far apart. We could be talking about every Saturn store in Europe. And if you're not familiar with Saturn, it's kind of like Best Buy. They're all over the place. And it's not just a lot of devices in one location. Each of these locations has lots of devices. And each of those devices is going to be drastically different. I mean just think about the difference in like the iPhone 5, 6, 7, 7 plus. I mean there's even in that one line there's a significant difference, let alone everything else they're going to be displaying. So in this case the approach is not that different, right? So Drupal manages everything. In fact there's no outside APIs for data. Everything comes from Drupal because it's all video, media, image content. Drupal also happens to manage all the devices. So anytime a new phone, a new tablet gets put into a store, Drupal's made aware of that. They're actually on this project using the Google model instead of the Amazon model. That's fine. It's still push. That's good. And one of the coolest things about this is they actually have an offline content model. All of their devices in this case are actually running Android. So they have a local app that's running that syncs up with the Drupal server, downloads all of the content and then plays it back. This is incredibly useful because the devices don't have to be online at all times. And just like any other Drupal website they can actually schedule when this material starts and stops. They can pre-provision the devices so they can download data over time several days early. And then it all just works. The real advantages of this is that you do have a central place to manage and create everything. And I do mean everything. There's no additional APIs to worry about. You can rapidly reuse content whether that's per session or over time across devices. Internet connectivity, as I said, isn't constantly required. And this system really is quite massively scalable. Again, they're already running tens of thousands of devices and there's nothing to stop them from going even larger. And again, as we've talked about, there is a significant amount of user experience for content managers here because they don't have to worry about what else might be interfering with what they're trying to put into Drupal because it's all in Drupal. All right, so let's talk about Case Study 2 which was the real-time issue. And in this one we're actually going to be talking about mass transit displays again. So in this case, all of the devices are digital screens. And the content here is going to be a healthy mix of arrival data, messaging data, and emergency communications. In this case, we still have some challenges. We do have to accomplish near real-time communication across thousands of devices and it's going to be fairly obvious if you can see two signs at the same time if they're not the same. So the public will know if you're hand-waving too much. You do have to have constant internet and web socket connectivity for this model. And that is a non-trivial problem that you shouldn't overlook, right?  Error handling and recovery, as I said, and it does provide for on-demand messaging, right? If something's wrong, you can go in right now. You can publish it right now and it'll be on the signs right now. Performance is definitely a challenge here. As we said, you have to be able to go in and parse this data very, very quickly, get it to the right places very, very quickly without relying too much on caching. Our approach here is that all of the data is getting parsed by Drupal. This is not surprising. Drupal provides some of the data. We use the Amazon WebSocket push model. We actually used React for the front-end in this case, but again, pick your poison. It could be done in just about any of the JavaScript frameworks. The unique thing about this is that as soon as a screen bootstraps, Drupal loads once and it's done. That's it. React takes over entirely. At that point, even though Drupal is technically providing the data, all of that data is coming via the WebSocket, not Drupal. What we've essentially created is a React front-end that is informed by Drupal, not a normal Drupal theme. As I said earlier, we can cache and create an inventory of Drupal Assets to speed up the parsing model. There are a number of advantages here. You can really do what I call right-sized messaging. You don't have to send it everywhere. You don't have to just send it one place. You can pick, or the content creator can pick, how much they want. Again, this system is massively scalable. I think now we're about ready to wrap it up. Hopefully, we've given you an idea of, number one, why use Drupal? Why is Drupal important? How do you use Drupal to do it? Giving you a few architectural techniques and approaches for how to do it and how to justify it. And a few case studies for how we use them. Hopefully, we'll see some digital signs and more and more of them being powered by Drupal over the next year. If anyone has any really cool projects, we really look forward to seeing them. And please let us know what they are in the next year. And finally, questions? Please do come up and use the microphone for the recording. What hardware did you test this with? I've been tasked with looking at redoing our digital signage and we'd like to do with Drupal because the WordPress site that we use sucks big time. So I was looking at maybe doing a couple of Raspberry Pi's because it's a closed network at my institution so I was just kind of curious what hardware setups that you guys use. So we can't talk too much about the specific setup.  It is a closed system. It's enclosed in a box. It's not a Raspberry Pi, but a Raspberry Pi is 100% legitimate. We can maybe talk a little bit more about that offline. But I mean, basically at this point, the important thing is that, like you said, it is a closed system and it is something that will actually power the screen. Sorry, I know that's kind of a vague answer, but... It's understandable. Thank you. Hi, this was great. But somebody has sort of propositioned me to make a mobile sign. So I'm wondering if there's precedent for getting data from, say, a GPS collection, you know, a unit going back into the servers to, you know, solicit the content. Do you have any experience with that?  You would... I mean, the question is, is how much hardware would you throw at it? I mean, if you're doing stuff that's personalized to GPS coordinates, so real-time, based on someone's personalized data, you're going to need a lot of hardware, so it gets expensive.  You know, every user may require processing for that. So that can be a little bit tricky. If you can make it less granular, so you have a large, vast geographical region, so maybe you have, like, a borough in New York or a neighborhood, and based on that, you create channels. If you have that level of granularity, then it becomes really, really easy, and you're not putting too much of a burden on your system. You know, the more that you can think of it as a broadcast system with WebSockets, the better off things are. You can always fake it with some polling, but you have to decide how real-time do you need versus, you know, how static is the data? It's a balance. Does that answer it? Pretty much. It's a work in progress, but thanks again. Maybe I'll consult you offline. Yeah, look us up. You mentioned in the second case study you used an Amazon push model. Have you built your own, or have you used any other services for push models? Yeah, we used the Amazon IoT library to do it. We did not want to build our own. That's a very, very bad idea. You know, often you build your own, and you have not thought through things, you can't support it, and it's more expensive. They were a little bit perplexed, I think, by our usage of it, because normally they think about it for devices. But they give us a tool that has, you know, the typical level of scaling that you would expect from an Amazon product. So the thing that it's not that hard to set up a WebSocket, right? That's not the problem. The scalability is the problem. So the whole reason we went with Amazon was we wanted something that we didn't have to worry about throwing servers at it. We just wanted it to work, no matter how many devices or how much traffic we needed. So, no, it's the short answer. We didn't play around with rolling our own because we didn't want to try and handle that variable scalability. Okay, thank you. How do you guys handle transient data because, like, how long the delay for a train is from four days ago isn't relevant anymore today? Right. So do you just have another Drush script out there or how does that work? So the nice thing about this system is that we aren't doing a whole lot of contextual manipulation of the data. So when we go out and ask our weather API is it raining in Baltimore right now, we don't do hand-waving to try and figure out if they're telling us the truth or not. So in terms of, like, transit data, if we're getting a feed of transit data from a source, we assume that that source knows that, yes, that train is actually five minutes away or it's gone. So we're not doing any hand-waving to try and figure out if the data we're getting is accurate. We are taking it on authority that the data we're getting is accurate. And also just that it's extremely, the data is always in flight. So we're constantly sending updates and if there are no updates, then the sign would stay staffed. So when you pull that into the Drupal content types, that becomes a node at some point. Well. So what we're doing about the real-time data, no, Drupal is actually taking that much data and shoving it into Drupal would be really slow. So what we do is we take that inventory of our content model and store that in a cache and then as we parse that data, it never touches Drupal. So it's all just object-oriented PHP that gets it, parses it, and shoots it out and we archive it for auditing and like health historical purposes. But no, we actually don't take, like, the data and put it into Drupal itself. Thank you. Any other questions? Well, thank you very much. The only other thing is we just wanted to remind you that there are sprints on Friday. So if you can, please attend. The DA asked us to include this. So thank them for organizing this. And thank you guys for attending. Thank you. Thank you. So basically, the way we did this, we sort of came out of computer-oriented PHP that we typically run with a Drupal browser. So we built all the data parses on the object-oriented PHP. So we built all the data parses on the object-oriented PHP. So we built all the data parses on the object-oriented PHP. So we built


Day 27, inside number 9, suggested by a delicious buttery dong and seconded by 19 people. Also, this is the last day to suggest a subject. The selection will be the 30th and final review of this ridiculous experiment, so I've changed the rules slightly. Check the pinned comment. But first, more British TV. I have never in my life talked about British TV as much as I have this past month. Bottle episode is the term for an episode of television where production is scaled way to heck down. Few actors, few locations, minimal prep work required. When it was coined, it was meant like pulling an episode out of a bottle like one might a genie back when I Dream of Genie was on the air. It's quick, cheap, and effective, but there's another way to define the term, one that's more creative and less cynical. It's like putting the characters in a bottle. Lock folks in a room for half an hour and you are guaranteed to get drama. By stripping back the action and really focusing on character, a bottle episode can be huge for getting audiences to understand who they're watching. Inside number nine is built on bottle episodes. Each of its stories, completely disconnected from any other, takes place in a single location with only a handful of actors. Sometimes this location is a beautiful mansion. Other times it's a single room in a train's sleeper car. The only connecting thread is the number posted on its exterior. 9. It's genius. Honestly, a foundation so broad that it could reliably hold pretty much anything you might want to do with it so long as you can keep it to a single place. It truly feels like a show that could go on forever. This is in contrast to something like Black Mirror, an anthology that really just ran out of steam in its fifth season and I think rightly ended, though it's unfortunate that it seems to have ended mostly due to rights. There are plenty more stories that could be told within its limitations, but producing a bunch of thematically linked feature films, which is really what any given season was if you accept the Oscars definition of a feature film as anything 40 minutes and over on anything like that kind of schedule, is hard especially for one man. Inside number nine, which released its first series in early 2014, addresses most of these issues. Next up, it's got two writers, Rhys Shearsmith and Steve Pemberton, who also act in most of the episodes, meaning there are two minds to mine for material. And while they need to come up with new characters for each episode, there's no need for thematic connection between any of them, which really opens up the possibilities. They're more limited by how they tell the stories than the kinds of stories that they can tell. While there's no thematic link, it's not as though there's no defining traits of an inside number nine episode. Like, even if one story takes place in a suburban family home and the next an actor's green room, there are commonalities. Each episode in some form or another features death. Sometimes that's literally characters dying on or off screen and others it's more of an implication, but it's always in the air somewhere. Also, they're funny, but the way that they inject humor into the often dark narratives changes radically from episode to episode. The pilot has that sort of awkward comedy I mentioned before that I don't particularly enjoy as an increasingly large group of people, many of whom don't really seem to like each other all that much, are forced into a wardrobe for a game of sardines. Most of the episode takes place in an enclosed six by three box. It also takes an incredibly dark turn towards the end, which is probably the most disturbing in its implications of any of the episodes that I saw. And then it was followed in episode two by a slapstick comedy devoid of dialogue. These two in particular really feel like setting the show's limits upfront. They are kind of the extremes and everything else will fall somewhere in between. And there's just, there's just so much that can go in between. So of course the show is still going strong. Within the limitations of this project, I only had time to watch nine episodes, all of series one and half of series two. But they've been plowing full steam ahead ever since, continuing to win critical acclaim and awards each year with a new set of stories. And I like every episode at least a little bit and some of them quite a lot. But the key point of an anthology is that it really doesn't matter if one episode sucks, you can just skip it. Hell, skip a whole series, watch everything in reverse chronological order. You will never know and it doesn't matter because even the biggest nine head is going into a new episode with the same amount of background as a novice. And I like that. It raises the stakes for the characters who may literally all die by the end of it. But it lowers them for me as a viewer and makes it something that I can just chill with. Sure, it is not the best British TV show I have seen or even the best British TV show I have reviewed in the month of January. But I think it's the one that I'm going to just throw on when I want something fun to watch. 8.0 out of 10. Thank you so much for watching. Thank you particularly to my patrons, my mom, hammering Marco, Kat Zaracotta, Benjamin Schiff, Anthony Cole, Elliot Fowler, Greg Lucina, Kojo, Phil Bates, Willow, I'm the sword, Riley Zimmerman, Claire Bear, Taylor Lindy's, Andrew Madison Design, and the folks who'd rather be red than red than red. If you liked this video, that's great. If you want more, I said last, last chance to choose what I'm going to do on the last day. Pretty wild. Thank God. So close. Three more videos. Jaws. Right? Or is it 20, 29, 30? Thank God. Oh my God. I can't do this anymore.


And your mark you got to put away from get set go This is Dennis Stephanie Burke with divine intimacy radio your radio haven of brass your hermitage of the heart You're a monastery of the mind where we lift our hearts and minds to heaven to draw upon the wisdom of the saints to help us To navigate this very very challenging life, and it's getting more challenging Every day it seems in the church and outside both So today we're talking but we're continuing we're ending our series on devil in the castle Yeah, and I have to tell you I'm sad. Are you sad? I have I have so enjoyed Digging deeper into st. Teresa and the interior castle. You know, so beautiful I agree with you. I and I do love this book. I know it sounds strange. I wrote it, but it feels like it's separate from me I don't know doesn't feel like it came out of me I'm not implying it came from God or anything like that, but it just She's amazing and the wisdom she provides is amazing and just how she goes through the progress of the soul and how to what battles are gonna come at each stage and how do we fight and it's been was fun to structure that to summarize each, you know battle and then to give Strategies to overcoming each one specific things people can do and then encouragement because it's interesting And I didn't discover this really the pattern really Until I did this that she always is encouraging saying this is tough. This is tough. But hey be encouraged This is this is a you know, you're moving toward God is the most common encouragement your father from sin now You're moving toward God. Yeah. Yeah, she really feels like a sister in Christ to me Yeah, and just her accompaniment her presence her You know, it's just awesome to have her around so Okay, so let's dive in the seventh mansion. What struck you about the seventh mansion, um, you know first of all is that What what struck me is this is a period of when the enemy's ability to derail someone is to greatly diminish Yeah, there's always the worry that you could get off track if you reach this level but what I love is that the We must always the reminder that we must always work to retain spiritual disciplines And to guard against the flashes rising up to rule the spirit again that we constantly have to be aware and so it ties right into her Admonition her encouragement her reminder constantly that self-knowledge is the thing that we can never let go of we always need to be growing in self-knowledge and it's it's just endless because God is endless and our comparison to him Our nothingness reveals so much. And so the enemy is always wanting us to kind of fall into this pattern of self-reliance or complacency Or sloth Asedia this idea like, you know, oh things are kind of quiet I can just kind of rest right now and as soon as we rest and we get complacent We need to expect that that will be Falling backward falling backwards. So we need to not do that So she just admonishes to keep going keep up your spiritual disciplines And at this point in the journey, it should be fairly habitual almost what it would in fact It is yeah, all of the disciplines are habitual And that's why the battle is not as raging as the first six mansion Yeah, I love that she makes it very personal and that she she reveals that the lord just loves us So tenderly that at this point He's he's really protective And it it just makes the enemy just ride because the enemy can't get to this soul And if they get to this point and hold on to the lord, they're They're safe like the lord's gonna bring them home at the end of their life And the enemy just rides against that because there's so much good being done The soul is their will is completely aligned with god's will. So they live for the lord 24 7th they live for the lord and they fight to that end constantly Yeah, I think it's important a couple of things you said I really liked one We're not impervious to falling to sin and you always have to guard and the way you do that Is to maintain your spiritual disciplines, which which she knows The other is that and I and I I you know, I talked a little bit about it before the show god is very He loves us and he's encouraging to us and I actually had a flashback a negative flashback I wanted to be a professional tennis player when I was a kid And I remember, you know, I didn't get much support from my family or whatever god's not like that He he puts us in the game if you will of becoming a saint And he is super encouraged. He's like the perfect parent Coming alongside to say you're gonna be fine. Hang in there. Don't get discouraged. I'm with you You know, in fact, he even said it. I'm with you even to the, you know, so God is always he set us on the course, but he promises That he began the good work in us, which it says in Philippians, I think And he's gonna finish it in us and the key is we just have to constantly Show up stay in the game. Yeah. Yeah. We at this point, we've really Sold all for the pearl of great price, right? We've understood this this exquisite journey we're on The goal is union with god and we're going to sell everything in order To to follow him and gain that that pearl Um at at the cost of all else, right? Um, but at this point the soul's discovered that nothing else really matters Nothing else really nothing else really matters. Yeah, there's no doubt about that And and just for folks if you're tuning in late and you miss the series You can get it out at spiritualdirection.com And also we're going to create a little a free mini course out at apostoleva.org Anything else strike you Stephanie about this chapter that you wanted to bring up? Yeah, that this is um really kind of Like a divine secret, which I just love. So, you know, we've been You know, sometimes folks say well, why do you focus on the devil? You shouldn't focus on the devil just, you know, focus on the good or whatever And the thing is is You know this growing in self-awareness and understanding how the enemy works in us Is all important because if you don't know what you're fighting or or how to fight You know, you can fall prey pretty quickly without some sort of extraordinary supernatural grace So I love what you put here, which is just so very important and we and and at this point the soul sees How the devil's evil efforts Have borne fruit in the soul through testing and purification Like silver and gold in the refiner's fire and it's referencing Zechariah 13 9 You know, so that the enemy is still a creature that's been created by god He's rejected god, but he's still god's creature And he's trying to destroy um The soul and I you know, it's like the lord is a mass is the master jujitsu, you know Uh coach or whatever And he constantly is showing the soul helping the soul and redirecting The efforts of the attacks of the enemy to actually work for the good of the soul, right? So these divine tests of love These trials and it's why we're told in james one. We should rejoice in the trials We should rejoice in these difficulties that we face because the lord is Jesus is lord and he's going to use it Against the enemy and for the good of our salvation and purification If we stay awake if we cooperate and if we Again follow the lord with all that we are Yeah, exactly. And you know, some people might be listening and wondering Well, how the heck do I do that? Like, uh, you know, they read it. They read the strategies that you know One of the things I did in this book and I really Wanted to make sure it was in this book Is I've never written a book and given all the tools that I thought were fundamentally necessary For someone to grow in holiness. There's not enough time Right, right, but the the book Covers each each chapter of the interior castle from st. Teresa of Avila and the strategies but also in it I've woven into that text and then in the the appendix out after that Ways that you can do what she presumed you were already doing in order to get where She's describing you can go right So we have something called the paradigm of ascent which Really is a summary of how it is that we Can be authentic disciples of jesus and it's in this book, right? It is. Yeah, both Visual form as well as description, right? And this is the first time it's been published in one of your in visual form. Yeah It was in a spiritual warfare and discernment of spirits, but it but Only in in word form But I wanted to make sure and the publisher agreed to put it all in So that you you get a visual of how it is that you say yes to god What are the most important protections and nurturing for that? Yes which are the sacraments and then prayer daily mental prayer in the exam and in a cesis But I think it breaks it down. I think to a level where Nobody can fail to understand. I don't know if there is is that a double negative? It's impossible to misunderstand How to make progress does that make sense if if you really desire it? And you ask for that grace you're going to understand and I you know one of Your giftings and I think part of our charism and in Apostle Eba and what we do And all of our teaching is that we bring things down to the practical, right? So it's really really helpful I know that visually if I mean you could even take that paradigm of the scent And stick it in your prayer book and just check yourself against that every day every day And you will make progress you will persevere and make progress if you stick to it And I think folks are good wondering Why aren't you talking about the chapter and the bottom line is in the seventh mansion? She said, you know, you're this is this is the easiest place really you still have to retain your disciplines that sort of thing So what we want to focus on and this part of the show in the last half is How do you get begin on the journey? What are the resources available to them and all of that? So the paradigm of scent we're talking about it now. It's in the book We also have a free course out on apostoleva.org And you can create a free profile you don't It's kind of like a digital monastery So there's a there's thousands and literally thousands of faithful Catholics on that site Anti facebook it is the anti right the anti facebook or social media And we have a traditionalist Catholics and charismatic Catholics in the whole gamut priest religious lady Right who are all wanting to learn together how to grow but there are free courses on The paradigm of ascent There's a free course on how to practice mental prayer, which st. Teresa says it's necessary For how you enter into the interior castle. It's necessary for your salvation. It's necessary. Well Well, let's just say this and this is true too Entering in the into the interior castle is necessary for your salvation And i'll say that because two doctors of the church have said it that if that Mental prayer is st. Teresa of Avalon st. Alfonso sluguri Both have said that mental prayer is necessary for your salvation. And if I could reword that before we go to the break Drawing near to jesus and talking to him Which sounds crazy to say it this way, but it's that is mental prayer Is necessary for your salvation. I think that breaks it down and takes it out of the ethereal Into the practical. So when we get back from the break, we'll talk about a few more resources available for your spiritual growth Okay, new markets that go This is dan self stephanie. What? Stop this is why you get to watch behind the scenes on the live stream. You get to see all of our mistakes This is dan and stephanie berke. Welcome back to divine intimacy radio your radio haven of rest We're talking about the the My newest book devil in the castle saint tree spiritual warfare st. Teresa of Avalon And the progress of the soul and we've reached the pinnacle. We've reached union with god Uh spiritual marriage now in the book you're talking about right right right seventh seventh chapter right seventh mansion Not seventh chapter seventh mansion in seventh chapter two. Oh, okay. You're very very cold. You were double, right? Okay, yeah one chapter per mansion, but we've reached in this mansion spiritual marriage where the souls human will Is completely united with god's divine will in other words everything about them Is into the best of their ability is constantly Being aligned and following what god desires for them that that's their end all be all that's how they live Yeah, well said the the a lot of people don't know this But it's not complicated to define holiness Is to holiness is The union of the wills right it means that all that I will whatever a hundred percent of my desires are The same as god's desires for me. Yeah, and you know, it's really beautiful before we get to the different resources that we have for for our listeners is that god in his Beautiful divine mercy Has given us all that we need in order to reach that state if we desire it And it's his desire that we reach that level of union with him. So it's you know, the sacraments and reconciliation, you know all of these beautiful um sacraments of the church, you know the prayer the teaching of the saints and the example of himself And his gift of his body In the Eucharist and with all of this combined if we just continue to stay and persevere We will reach reach this state if we desire it. Yeah, you're pointing to my favorite passage in the catechism Is the entire divine economy is ordered that we might know union Yeah with god what you just described it god has given us You know the hierarchy of the church canon law the sacraments that you know just parishes Yeah, you know all of that is ordered so that we will come to union not so that we will be Mediocre christians, but that we would become saints, you know, and what's so incredible about it is he desires it And and if we have fallen pray to the lie that god is against us that he's some sort of you know A superpower nemesis that wants to see our failure or divine killjoy. Yeah, whatever it is It's not And it's not true. It's not true and we we need to Learn how to really listen to god's voice to understand and recognize his voice And follow it and in partake of all these beautiful things that he's given us to bring us to himself In complete unity, you know absolutely and the In terms of resources we have we mentioned before the break. We have a free course On the paradigm of ascent in apostolate va We have a free course on mental prayer, you know that follows what I wrote in into the deep To help people understand what that is We have a free course on how to do the examine. I mean just Whatever you need along with all the fellowship and support that you need an apostolate va.org is out there if you want a More formal education On the interior life spiritual direction calm will lead you to The avala institute as well. So avala dash institute dot org We have amazing courses on the interior life Both from a graduate study standpoint and from What we call a school of spiritual formation Which is not undergrad it's it's actually easier than that But there the quality of the education is not less It's just made for busy priests religious and lay people who Don't have as much time at their disposal to do a graduate program and all the papers and all that I want to tell folks just as an example A few different kinds of courses that we teach at the avalanche suit that are absolutely amazing Liturgies and devotion to the Byzantine right so learning more about the eastern rung eastern lung As uh john paul the second used to speak of The church so the Byzantines of course in union with the pope in rome And father joel bar sats teaching that and he's a Byzantine priest, which is pretty cool Dr. Bar sat talked used to teach with with us before he became a priest That's one example another one is transformation in christ. It's funny. Both of these are on on catholic eastern Spirituality and this one is how that you become a partaker in the divine nature as st. Peter said in his official but Dr. Gamma talks about the mission of christ his invitation is calling to deeper conversion and intimacy Etc so If you want to grow in your faith if you want to understand What the saints have said across the spectrum of the church It's not just why it is named. I mean we are the founders dr. Lillis and I are carmelite as is stephanie as is our community Um primarily carmelite, but our goal is not to make everyone into our own image So to speak or even to the image of the carmelite saints The goal is to present the panoply the beautiful Our cornucopia. It's not it's not a Thanksgiving I always think of cornucopia as a Thanksgiving but the beautiful panoply of The church or the the the facets of the diamond Franciscans of spirituality is very beautiful when it's worth when it's faithful Dominican spirituality So all of these different spiritualities in the church. We're trying to give To you through the avalanche to to grow and really come to union with god. Yeah, I mean whatever you Really most anything that you're looking for you're going to find it and it's going to be faithful I'm your net you're going to be able to engage in the material and listen and And and the community of apostole v a and never worry that you're going to be Led into something that's going to be dangerous for your spiritual growth or lead you often to You know Some non-christian Something something or another and you know, I I was talking to somebody recently at our divine intimacy marriage retreat And she said I'm I'm just so relieved To have found y'all she said I I have gone to things. I've gone to events I've I've engaged in things that have come across at my parish or whatever And she said I get an inch deep and I'm panicking because I'm realizing that they're teaching things That are going to be dangerous for my soul and I had enough formation And enough understanding that this was not Christian and it wasn't in keeping with the teachings of the church And she said I just can't tell you what a relief it is to be able to rest And to just partake of this and just drink it to the dregs And and what god's doing in in me and in my marriage and all of this Through the avala institute through spiritual direction calm and through apostole v a you know, it's a it's a difficult time There's a lot of confusing stuff out there And it's important to draw near to truth and goodness and holiness and uh as as you and I often say Saints run in packs So you need to go look for the saints and run with them and run with them because that's how we're going to get each other there and It's just really such a grace, you know, I'm just curious because this whole series has been on saint therese of avalon how to Her wisdom and of course you you did a series with Endow with education the nature and dignity of women and yeah great organizations supporting and you find it on their podcast series It's a seven part series on their study of saint therese of avalon teacher of prayer as we kind of wind things down Uh, is there anything about her or saint therese her teachings that really Got to you in a different way because we you've been around it for a while Or is there any anything you want to convey to people about it that maybe is just uniquely impacted you? Um, I think it's just her Desire through her writings to convey this for everyone Yeah, just her her, you know, she she can She can be difficult to understand sometimes but Her obedience her humility Her fervency her strength All of it conveys her ingenuity. Yeah all of that and and I just um, I'm so moved by her And I just think that if you engage in it no matter really what your spirituality is whether you're Dominican, Franciscan Um, certainly if you're carmelite You're gonna gain you're going to gain by knowing saint therese and her writings. It's funny Of course great Dominican scholars father original gargoyle grange father legrange Ontario uh and others jordan amon They were all Dominic those three I mentioned are dominicans and were deeply enriched by A carmelite spirituality and I think no matter it's your point is really good Because people think that if they're in one order That that's only where they should get their sustenance and that just isn't true No, because it really whatever order you're in You need to be praying.  I never knew you new you, you know as adam new eve There's this intimacy that he's calling us to and it can only come through prayer And saint Teresa explains that she shows us she gives concrete examples And it's just really so incredibly helpful Yeah, and for the picky listener out there if you're if you didn't if you haven't listened to stephanie for a long time Of course, she's assuming that we're in the sacraments and that we're living in a state of grace But that's foundational. I mean even to get all the graces out of the sacraments the Great doctors of the church, Teresa of Avalon in particular, but also Sino-Fonza, Seguri Saint John of the cross, Saint Therese would all tell you That the more you draw near to Jesus in mental prayer the more it's going to enrich Your sacramental participation. Yeah, so it's not a separate thing It's that saves you, but it's something that draws you near to him and where you experience him more great deeply so pick up the book Devil in the Castle Saint Teresa of Avalon progress to the soul Yeah, so I'd like to end today with your the final sentence in your book because I just think it's so fantastic So again, we've been talking about, you know, the devil in the castle And so here is what you put and I just think it's awesome For God uses the devil as his own instrument in the sanctification of souls A paradoxical mode of resistance training To raise up valiant Lovers soldiers who will fight for and worship their lord and their king in the holy and sacred heart of the castle awesome I mean I'm giving myself credit for writing that I you know, I think what my editor may have written that I don't know. It was it was too too well done. It's beautiful. There you go. Just receive there you go Thanks for being with us folks and for walking with us through Devil in the castle go pick it up read it spread the word Help others to come to a deeper relationship with jesus Through that and a lot of other of our works were grateful to have you as listeners and friends and we'll meet you in prayer Until the next time may the god of peace make you perfect in holiness May he preserve you whole and entire spirit soul and body Irreproachable at the coming of our lord jesus christ amen