Yeah, like Brandon mentioned, this is roughly designed to be a follow-up to his talk. I did take some time to talk about things in a slightly different way. Keep in mind, I'm also not an expert, I'm not Ed Komet, I'm not Brian McKenna, I'm not all these people you would think about as a functional programming experts. I mean, I've been working with it for quite some time, but I'm definitely not the master. So, about me, I'm Colt Fredrickson, I work at Oracle, we got bought up by them a few years ago. I work on a big data, there you go, drop that word, team and we do some interesting stuff with Scala. I've been working in Scala since 2011. Originally I started writing it as better Java, you know, because it's, it is, it's way better than Java, even if you just write it like Java. But then once you start getting into these problems like Brandon's talking about, where you want error messages and you want to combine failures and all this stuff, you do run into some interesting things. So, ask questions, at any point you're confused about what I'm doing or why I'm doing it, just stop me. This is not designed to be, I'm gonna go all the way through to the end and then there's like, ask a question about something at the beginning, if on the way it doesn't make sense, please just stop me. So, Scala is that is just functional programming language or functional programming library for Scala. It's basically trying to take principal data structures and that kind of stuff and use them in Scala. Now, what typically happens when you show somebody Scala is that it's roughly this. If you walk up to a standard Scala developer who uses this as a better Java and they just like, what are you even saying to me? Because they run the stuff like this, like modad trans of f of higher kind of this and this and it takes arbitrary types and they send you a chat message that says, I have no idea what this means or how it's useful. And so, you know, that's not really what you want people to be dealing with or this. It's like, okay, it's a function for me to be but look at that type, like look at the symbols, like if somebody doesn't understand lambdas and alphas in the first place, in any sort of category theory or something like that, they'll just be like, I don't want this. So really, it's not that bad.  Like you don't have to deal with that. So before we talk about all those data structures and type classes, the Scholasy package structure is a very interesting beast. So we're just going to kind of go through it and talk about it and hopefully you can all tweet out these slides afterwards and you can come back to it and kind of use it. So all data types are underneath Scholasy base package. So like even the type classes like Functor, Monad, etc. are under there as well as Clisly, non-empty list, etc. So if you want them all, you can import Scholasy underscore and you'll get all the data types from Scholasy. But if you want them, you can import them individually. So syntax, a lot of what Scholasy offers is the stuff that Brenda was talking about with like Star, Greater Than, or Pipe at Pipe, Pinkie Pie, whatever you want to call it. So you can get that syntax by importing the data type dot underscore. So if you want to put either syntax onto your standard data type, so you can put like dot left to lift something into a left side of a disjunction or dot right, you just import Scholasy syntax either underscore. Also note that it's wildly confusing that it's either or not disjunction when everybody calls it disjunction. But that's the way it is. Same thing with equal. If you import equal dot underscore, you get an implicit def that basically converts anything that has a equal type class into something that has syntax for triple equals and equals slash equals, which is a more safe way of dealing with equality. And the same thing with functor adds map and map to your stuff that has a functor type class.  So you will run into the scenarios where you're starting to develop in a file and you don't know what you need from Scholasy. So you start with the import scholasy dot underscore scholasy dot underscore and just like work in there. But I try to avoid personally committing that unless I'm, if I really am leveraging a lot of things, I'll switch to like, well, I'm getting it all. But otherwise, I like to put comments about why certain imports are there for just to help out my coworkers really. So you can also get syntax for standard library stuff. So a lot of what skull is that also does is add syntax to standard library classes, like interspersed on list or, I don't know, there's a bunch of other examples. So you can also get standard library syntax stuff from the syntax to std dot whatever package. And then you get type class instances from Scholasy, std, and then the type name dot underscore. So all this is really a little bit confusing. And so there's a friendly guy C dubs, Cody. He has a flow chart for this. That's how complicated it is. So this flow chart is at this URL, which I'll tweet out. But he was ultimately responsible for that. And so you just start at the top and it'll be like, Well, what am I, what am I looking for? What kind of error messages am I getting that kind of thing? And I'll walk you through what to import. It's kind of sad that we need that. But same time, things are split up. Okay, so let's dig in. We're gonna talk about a couple types. We're gonna talk a little bit about non empty list. We're gonna get into a little more. And then we're gonna talk about type classes. So I said I was going to talk about non empty list. I kind of am. There's a there's a type called one and, and it's parameterized on a type F. And that this allows you to say, I have at least one value of, of type A, and then I have a tail of values that are in some type F.  So you can define non empty less in terms of one and scholars that didn't. I think it's probably because they just wanted to put a bunch more functionality on there and not expose out that type. It's also, I did note that one and is invariant. And a non empty list is not invariant. So that might also be the reason that it's okay. It doesn't actually work correctly to the extent that now can be defined in terms of that. So that's part of why it's okay. Sure. Oh, okay. So yeah, in 72, there's variants on. Is there invariant? Yeah, it may not have to list invariant.  Okay. So non empty list. This is the point at which I if you have a list that you know isn't empty, and you return out the list type anyways, you're just being a bad person to your consumers. You're basically saying to your consumers in a comment or whatever, Hey, I guarantee this list won't be empty. It's safe to call head on it. And then they end up in if they're filing any kind of Scott style guideline, they're going to have like a head with a comment that says, I'm sorry, future me. Really, this is safe. It's like, we have types for a reason. Let's use them. Okay, soapbox. So box over. So non empty list. There's two constructors we're going to talk about. So the there's basically just if you pass in the head and some list as the tail, and then there's a var version of that that allows you to pass in any number of arguments and it'll make it into a list. But it's exactly what you'd expect other operators like, there's a maximum by there's a minimum by there's all kinds of list functionality on there. As well as you can see here, I mean, that the head is a value, it's not a depth that will throw it exception. In some cases, it's not partial on any kind of way, it is a value, you know it, use it. And so if you're desperate, and something you're going to call into needs a list, it's a constant time operation, just call dot list on your non empty list, and you'll get back the list. So you could pass it off.  But I had to do this because of whatever reason. But if we all agree that non empty lists are a thing, then we could just stop, you know, having functions that only operate on list. So non empty list. I just wanted to give like some examples of where this is a really good idea. So in Addo, which is a thing, Rob wrote, parser library, there's the ability to parse match many of a particular parser. So I match zero to n matches of that parser and still succeed if there's zero. If you're if you want to have at least one, the return type should be non empty list, because we know that there's at least one. Like, so there's none of this magic where we have to figure out when I call many one is was there one for sure, I know there was because that's what the documentation said. But now the type says it to So let's see, lost here. Okay, so here's another interesting thing. So say that you have a thing called validate users, like Brandon was talking about validating users. So we here we have something that takes a list of users and returns you a validation of non empty list of errors, like we're talking about, or a list of users. Well, is an empty list of users a reasonable thing to validate? Are we saying for our particular use case that empty list is valid? If we are, then that's the data type is entirely precise. But if we're not, and we actually said, you have to have at least one user, the second type is right. So it's just tried try to be as precise as possible with your type to help out your users. So it's all about precision. If you're, if you're talking about your types, we have types, let's use them be precise. So let's talk about validation. We just got done talking about it a bunch. But it, it looks just like a disjunction. Right there, there, there's left, that's failure, there's right success. It's, it's not entirely obvious. At first glance, why it is what it is. So you get some operations on validation. We just talked about validation NEL. That's just conversion. Disjunction, they're completely isomorphic to each other. It's always like safe to go from a validation to a disjunction and back to a validation. So if you need to, for instance, use it as a monad, a flat map over it, you can just convert it to a disjunction, use it in that fashion, and then convert it back at the end. Do note that you'll lose the error accumulation on it when you do that, because you've converted it to a disjunction, but you can do that if you need to. So this is another place where sure, it would be inconvenient if you couldn't do these isomorphisms easily. But if you can do these isomorphisms, there's just no reason to not be precise about what you were, what you're doing. So if you're doing validation, use a validation. Go just make a point about the whole like, applicative versus flat mapping kind of things with errors. It really comes down to what is your error handling want to be? Is it halt on first error or is it accumulate? Yep. Just something to keep in mind. Yep. And you might switch between those in your domain. Like at Brendan's lower level, you might want to accumulate all these low level errors. But at the top level, you want to fail as fast as possible. So you can switch between these two, you don't have to choose. They're isomorphic to each other. So it's not a monad. So the first time we try to use it in a fork comprehension, you get the error that you can't. Just don't be too sad. So here's just a couple examples. And I use the Pinkie Pie syntax here. But we don't even need to really go into these because we talked about it a bunch in the last section. But basically, it's just accumulating errors on the left. And it's calling the function with the success values if it was a success. So I don't really, yeah, that's all I have to say about the actual data types. Does anybody have any question about the data types before we move on to type classes? Perfect. All right. So before we go any further, I just want to take a brief aside. Everybody here probably knows type class syntax. But it can get a little weird if you haven't dealt with this before. So functor in this particular case is a type class over some higher kind of type F. So that's just saying a type that needs another type before it's actually a full type. And so what we're saying here is list instance is defined over just list. It's not defined over a list of a or a list of a specific type. It's defined for all lists regardless of what's in it. And then the a's come in in actual functions. So map is defined for any list of a given a function of from a to b. So Daniel has a talk from quite some time ago, high wizardry in the land of Scala about higher kind of types. So if you don't know about higher kind of types, and you want to learn about them, I do recommend that talk. It was like basically three years ago or something crazy now. But I think he does a good job talking about what higher kind of types are and and why they're useful. And just the terminology that surrounds it. So yeah, why should I think most of the talk is just like star to star to star. So there's there's a lot of stars in there. So let's talk about the semi group type class. This is a type class that's just saying you can add things together. So the reason it's not called like additive is because I mean, addition is also commutative.  The only laws that deal with you deal with when you're talking about a semi group is associativity. So you got to be able to add together and B to C. And then, you know, and B or a to B and C, like, that's, that's the only law, the only way it has to work. And there is such a thing as a commutative semi group. If that's the kind of restriction you need, it doesn't exist today. And Scala said, I've talked to Lars a little bit about it, but I haven't talked to him since like the whole switcheroo. So semi group. This is a there's some really interesting things you get from semi group. And this is just one of them. I defined a little thing here that is wildly useful to me a lot of times, where if I want to update a value inside of a map, and if there is a value in there, I want to append my new value to it. If there's not, I just want to put it in there. This is something we want to do all the time. Like, here, I've probably written this function, like a hundred times before I discovered this, over different types before I understood how I could do it better. So all they did was say B has to be a semi group, and it'll, you work for any map A to B. And that little bar plus bar, I'm going to leave it to Brendan to name it. But it's basically the syntax for append. So I could have said append there. Now it's obvious I had to have the syntax and scope and all that stuff. I didn't show the imports here. But so if I append a map or the keys lineup, it just adds together those two lists in the value. So the, the semi group for list is just appending. In the second one, like you can see, since the keys are different, it obviously just put the first value in there. So that's all I have to talk about with semi group. It's fairly simple. Monoid is just the semi group, but there's a zero that you can put in anywhere. Think of zeros like the zero for addition or the one for product on numbers. Identity. Yeah, they call it zero. Exactly. So that's a great problem where zero is the identity. And they probably should have called it that, but they did. So there's the, there's the laws. I don't think we need to go into them. So it gives you a few simple things. Multiply just appends a value together end times. You'll run into a lot of cases where you're going to want to check to see if something is the identity or not. And then you've got the empty, if it is the identity, do something special. But the, the power from Monoids does not come from using them by themselves. It's what you get from them when you put that together and we'll talk about that a little bit. So here's just some instances of Monoids. You'll find them everywhere. Once you start thinking about things like this, being able to add data structures together is almost all of what we normally do as software engineers. Like we're, we're fiddling bits. That's basically our job. So here's a, here's an example of something that I wish that I had a lot of times is better some. It's basically for anything that could be added together that has an identity, I want to sum it. If you try to call some on something in the untroversable once, and it's not numeric, like you'll get a compiler. And that's not what I want. I want to be able to add together strings and I want to be able to add together options of values. And I want to be able to add together all these different types of things. So here's the really fascinating one that, that I find wildly useful is being able to add together maps. So you can add together maps where it's for wherever the key is equal, it's going to add together the value for you. We just talked about that a little bit in the last one where you want to update a single element. But what if you just want to merge two maps? That's something like I end up wanting to do quite, quite a bit when I get back something that looks like JSON, I'm storing it in a map in memory. I just want to add together those values and then I'll turn it back into JSON or whatever. So map is a monoid if the values can be appended. So that's just saying, if you have a semi group for your value, you can add together maps. And that's an example here where A, in the first example, two and three got added together. In the second example, it didn't. So I find like the monites are just so useful. You'll run into this all the time once you start thinking about it. Anytime you can add two things together and think, well, if I just made this a monoid, like what am I, what would I get out of ScalaZed for free? Being able to, being able to leverage that. So you'll see it all over the place now. The next one I want to talk about, we're going to take a pretty significant jump in terms of mental energy expended from monoid. But foldable is, is a wildly useful type class. So you have to implement either a fold map or fold right. I'm not going to talk about fold right right now. I'd like to think about it in terms of fold map, because then it's basically like map reduce. So fold map, you have some container thingy F, and you have some function that goes from A to B, and you have the ability to add together B's. That's all this is saying. If you do that, what are we talking about here? I mean, we are talking about map reduce. You map, then you collapse it all into one value. And so it turns out this, this comes up all the time. There's no laws per se, except for the consistency laws. I, I somehow, I went back to the original paper and it seems like there should be one more law, but I haven't spent any time working on it. So this gives you the ability to like do things like length on some data structure, convert it to lists and sequences and sets, minimums and maximums. I'm going to mention fold map M here, because it's so cool. Once you see, see that you need to use for it. But that's just going to some value G, which is a monad. Just, just if you start, if you start ending up in a place where the value you're using inside of your fold maps are monads, maybe this is what you want. Just start poking at it and come bother us on IRC when you run into that problem. So give a couple of examples. I'm going to give examples mainly in terms of collection things, because that's what most people think of and what most people can derive good uses for. But any structure that can be collapsed into a single value in a consistent way is foldable. So you could run into some places where this is worthwhile in something you have yourself that's holding onto values. So fold map of identity over integers is the exact same as if I just folded left, seeded the fold left with the identity and then accumulated the values from left to right. It's exactly the same. So now we've got if we've got a list of maps like we talked about before, maps are a monoid if the value is a semi group. So you can fold over this list of maps if you want to accumulate the values at that where the keys are the same. Now you might run into an issue where you're like, well, that's not what I wanted at all. What I really wanted was I want to sum up all the values inside of the maps. So you you can compose foldable structures into a foldable structure that's bigger. So if you have a list of maps, you can collapse the maps together. But if you want, you can create a foldable structure that operates over the list of map and just fold over the values. So this is really neat when you come into this place where you want to ignore the keys in the map and just collapse all the values together. So here I went. I summed a foldable of list. I composed that with a map foldable for map of string to some value. And here I'm using not the super ugly syntax of symbols for that type. I'm using kind projector, which if you deal with higher kind of types at all, you should probably take a look at. But then I fold map over that that list of maps up top. And just in for a change of pace instead of doing just the identity function, I added a hundred to each value. So what this does that takes 101 plus 102 plus 103 and returns you the value. So sometimes it's hard to see that this is what you really want because you've written this deeply nested code that kind of looks like a rat's nest. And all you wanted to do is just pull out the values and add them together. So sometimes when you have something super nested and ugly, stop, think, could this be solved with something slightly better? Sure. So this is, it's a whole. So that's to say, foldable structures, if you remember are defined over f of underscore. So you can't fully specify a type.  This is using, I could have used, you remember on the first slide where Pinkie is vomiting herself up, I could use some super ugly syntax like that.  Stu might talk about that kind of stuff when he talks about cats, because they use kind of projector all over the place. You kind of think of the question mark there is filling in the type of the list where it has foldable list. Yeah, it's it could be a type alias too. Yeah, you did. I could have done that. And I maybe show. You could write big lambda. Yeah, I think I'll avoid the lambda if I can. Not hardcore enough. Yeah, more specifically, I don't like scaring people away. Um, so we've talked about foldable, which takes a structure of some big structure and collapses it down into one value. Now let's talk about traverse. And if you look at the Haskell stuff as this traversable, but that's kind of taken by some of the scholar standard stuff. So they chose to just go with traverse. But basically this goes from some structure. And for every function in there, you're going to some other value, some other applicative value like validation is a good example, or disjunction or option. And see the return type at the end there G of F of B. So we went for each element in our F, we're going from an A to a G of B. And we're basically constructing one big F of G of B's. And we're then just going to flip that structure inside out. So the first time I saw this, I couldn't believe that it was a thing and I couldn't make any sense of it. So just think about it as the thing you probably always want. It is true. It's almost always the right answer. If you have a list of things you're going to validate and you go over it and you create a list of validations, almost what you want is a validation of list, because you want all your successes together or you want that failure. So let's just dig into some examples. So first, I'm going to talk about the super ugly thing that exists. So Scala C isn't the best at type inferring, higher kind of types. So actually let's just say that it can't. Let's just say it can't. So the clever people in Scala Z and they invented these weird unapply super ugly things. I only put it up here almost for like laughability sake. Don't pay attention to the these versions in terms of the type signatures, but always use them. Almost always what you want is traverse you instead of traverse impulse because the type inference on in Scala C is bad. It's just the way it is. Just use them, but be afraid. Be very afraid. So you're saying that that's what we should use as an end user, not when we implement our own traverse. Correct. Yep. You implement traverse impulse. So you get to implement it in terms of that nice type signature. Now, the unapply things that we that are in this slide only exist for the most common shapes. Oh, God. But I haven't run into an instance, especially in the in the gateway drug like casual user where you're not hardcore and defining your own traversable types. You will you will have much deeper knowledge of this stuff before you have to create your own just using what's there. So just don't pay attention to the type signature. Use it and come bother people if you if you have problems. This is basically like what's going on there is basically the very tip of the shapeless. Yeah, there's if you start going down that path, you will land in shapeless. There will be a lot of yelling, mostly fear. So let's talk about this. I said it's what you almost always want and it is. So if I if I map over some function, just pretend that I plus 100 could fail in some case, I'll talk about on the next line. But I if I go across that and I map it, I end up with a list of option of int. Well, that's probably not what you want.  But if you call this sequence you on the end, it'll flip that structure inside out. So you can see in the second line, instead of getting back a list that has some failures and some successes, you get back just the failure. And then you can fold on it, pattern match on it, do whatever you want with that option on the outside. Um, so traverse you is just map plus sequence you. So if you find yourself mapping and then calling sequence you, you can just replace the map with a traverse you and delete the sequence you. It's actually a lot more common than sequence you. Yeah, you're almost always mapping, right? You're almost always mapping anyways. But I find I found myself when I first started using this stuff, I would just write the map and be like, oh, I need to flip this thing inside out, tack the sequence you on to the end and then you're like, oh, I see this common pattern. I can do it in one call instead of two. So this is just the same code. I just replaced the map with a traverse you and got rid of the sequence you. Like I mentioned, OK, so validation is where this typically comes up. You're validating a list of things and you want to get back all the failures or you want to get back the success. So I define just a type alias validation of non empty list of string. And then I valid validate user returns on my validation of user. So I take some string and presumably creates some user out of it. So in this case, I end up with I've got list colt fred bob bunch of symbols and let's say symbols are not valid. So I get back a failure that has a non empty list with both of the error messages in it. So I accumulated all the errors or I would have gotten back the user which I is the success. So you're going to get back a failure with all your errors which is a non empty list because you know that there's an error in there. If you're getting back the left side or the failure side or you would get back the user. So if you look at the scenario where there is just valid users, you get back a success with lists of users. So also know like we're talking about your validation code is still written in terms of a single user so you can unit test it really nicely but then you can comprehend across it or traverse across it using this nice traverse you thing to accumulate lots of successes or lots of failures. So that is it. Thank you.


So what if you have to solve for all the values in a resistor circuit? And by all the values I mean for each resistor find the voltage and the current for that particular resistor. Well over the years I found a general strategy that seems to really helps beginning students to keep their work organized and give them some clues for what steps they need to take next. And it involves using a table to keep their work organized. Now in this particular case you'd have a column for the resistances, a column for the voltages, and a column for the currents. The first row will always represent the first resistor's values. The second row would be the second resistor. If you did have more resistors you'd have a third row, fourth row, etc. And then your last row is the equivalent resistance for that section of the circuit or perhaps for the entire circuit if it's a simple circuit. The equivalent voltage would be the voltage over that whole section of the circuit and the current through that whole section of the circuit. Now again if it's a simple circuit this equivalent voltage and current is going to be the voltage on the battery and the current through the battery. Now in these rows each row is going to be following the Ohm's law equations. So if you're solving for the resistance it's the voltage divided by the current. If you're solving for the voltage it's the current times the resistance. And if you're solving for the current it's the voltage over the resistance. And for the first row it would be the first voltage and current and the first resistance. But if you were doing it for one of the other rows it would be the values on that row. Now the individual columns that's going to depend on whether or not you've got a series circuit or a parallel circuit. I'm just going to move some of my stuff up here so it's easier to see. For my column equations if it's a series circuit then what you've got is that the resistances are going to add. The voltages would add but the currents are all the same. But if it's a parallel circuit then you're going to have a slightly different set of equations. The equivalent resistances are the inverses. The voltages are going to be equal to one another. That equation's not quite right so I'll correct it right now. And the currents would add up. So in a series circuit it's the currents that are equal to each other. In a parallel circuit it's the voltages that are equal to each other. So that's going to give you your column equations. And again it's going to depend on whether you've got series or parallel. So you'll look at your description or your circuit diagram and figure out which set of those is going to be the proper one. Now you'll start by filling in any values that you know. And then any time you have a row or column where there's only one value missing you'll be able to solve for that missing value. I'm going to do a couple other videos here with some examples for both series circuits and parallel circuits to give you a better idea but I'm going to put those in separate videos.


Hello everyone How are you doing? Very good Okay, I'd like to start this session. My name is Joseph Todd and I'm a CEO of Mock Design I'm also a front-end structure for this DrupalCon Munich So I would like to take this opportunity to thank to all of previous speakers And also to you who came and support the speakers and wanted to learn some new stuff So thank you for making this conference awesome At Mock Design Mock Design is a Slavic based Drupal development company We build online communities for non-profit organizations and also for businesses and we are also very passionate about bringing Great design to Drupal We also do a lot of work at design work for Drupal community Maybe you can recognize some of the Infographics which we did we also Created a branding for Drupal 7 and also marketing materials for Drupal 7 launch and the parties which were happening around the globe I also have some of the infographics here. So feel free to come after the session and take some with you Alright, so I Told you something about myself, and I would like to hear something about yourself. So On account of three, can you please all shout your name?  I know them because they were with me so okay How many of you are designers? Okay Themers themers are probably the biggest group developers Okay, and how many of you are business guys or project managers? Okay, anything else? Do we have any other special position here? okay, so Today I would like to talk about the strategy behind designing for CMS and in order To begin I would like to share with you my story and what different experience I have with design so Since I was kid I was always around Computers I was playing with them hacking Be us and Windows 95 or 3.1 I remember that I got a note from a teacher because we had a computer class and The computer was so slow. I tried to hack the BIOS and I screwed up some things so the teacher got angry but I became basically the guy that fixes computers for everyone in the family and It got actually so annoying that I wanted to start charge charging for phone calls which I got from my brother or father or whoever so Then next to playing Transport icon or Age of Empires are studied. I discovered Photoshop. So I was like hey, I can do some photo manipulations I did a lot of retouching. I really liked it. I'm not sure if others liked it, but I Ended up actually designing posters and flyers for different events and I got my first real job with a printing company I worked there as a print designer designing a lot of packages for different products and Eventually they asked me to design and build a website for them So this was something new to me. So I learned some HTML CSS and I put together something in Dream River so this was my very first experience with web and Then around 2004 I decided that this is something which I really like and I would like to Do it for a living. So I dive deeper in this I built some websites some static websites for some friends or local companies and After some time it got in way and I because they were always Getting back to me ask for changes do this do that. I don't like this I need to change this text and I kind of do so as I was thinking there must be something Something where they could manage the website for themselves So I found out about these CMS thing This was it was quite new for me at that time and I started to play with the many different CMS like Joomla or type of three or mottics and on the end I found some great article about how to build your first website in Drupal and Basically that changed my life So I started around time when Drupal 4 4.6 was Very fresh. It actually came out just and a few years later months later. I started to work with some Companies as a designer and a themeer and my first job with one of the that those companies was to theme three basically Exactly the same sites. They just had different colors and you know So I started working on that project in the first one took me about hundred hours to do that Then the second was about 60 hours. So I felt like okay I'm getting somewhere and then I did the last for about 35 hours and So I made some some progress and I was actually very grateful that they didn't fire me after the hundred hour project because it was certainly too long but It was great time I was working with some very Excellent Drupal developers who are many of them are core contributors or they Created a tons of modules which we use every day and I also got to the first Drupal come it was in second and in Washington we Had our first Drupal designers meet up. So it was wonderful. We Spend like five hours just discussing Drupal and talking how we could make it You know more nice because the one thing which I heard a lot at that time was that Drupal is ugly How many of you have heard this phrase? Sometimes yeah, so I knew that it's not actually true I knew that it's not about Drupal. I knew that Drupal can be used to build many wonderful websites So my usual answer to that was no, it's not Drupal. Drupal is not ugly, but the theme are so lazy and There was including me maybe but Anyways In 2009 I became I co-founded Mock design and I became a CEO in my responsibility shifted from visual design into business development, I also do a lot of user experience design and Sometimes my colleague let me also manage some project So I got yet another perspective to design so the three perspectives which I would like to talk today are From a designer from a themeer and from a CEO what I I would like to share some ideas and things which I learned and Things which I would like to know when I started to design for for Drupal Basically how to Create a successful design which is easy to theme which is cost-effective which is still Beautiful and it's meeting Clients need you know the words basically how to make everyone happy So I'd like to start from a designer perspective There will be several key points which I'd like to mention first one is the difference between print design and web design Many times Actually, it was my experience also one other design which we hire later Many come many of us come from the print design background And there are several differences which which I'd like to point out first of all first of that is that the There is a difference between the print canvas basically in the screen on which the web design is displayed the size of the print canvas, it's always the same you have the exact dimensions of newspaper or you have the poster or flyer and You can look at it in the straight at home. It always has the same dimensions But when you design a website it can be very different When you look at it on a large monitor on small when you look at it on tablet or on some mobile device So we need to Think about this perspective. How will my design look on across multiple? Devices in there and has there has been a great session about this. I believe yesterday. I encourage you to listen to that Another another difference is that For print usually designed with 300 dpi Which could be a problem if you design if you would design websites You know with 300 dpi because the files would be just very very large and it would improve affect the performance of the website also you need to take care about the Image compression you need to save the files for for the web and not you know just as a standard jpeg and Also, I encourage you to learn about the differences between jpeg and png files And I usually use jpeg when it's a lot of colors and different shapes And when it's less colors and or some transparency needed Always use png Also colors are Different for print you design with We call it SMIC in slakia But for web you design with rgb and many times You design something on a monitor and then you print it and you are scared how it will look on In the real life because the colors make the color profile of the printer may be different or whatever so You need to make sure that you use the correct formats for for what you are trying to achieve There are also some other problematic elements or things which might cause some issues and it's Shadows gradients or rounded corners or typography many of these things can create Some overhead when when actually trying to theme that and I know that with the current new technologies Might not be as big problem or it's much more flexible But it's still very good to learn about what the limitations are Another difference is When you design a poster you have the full canvas behind you the full space and you just Placed the limit elements somewhere where it will look good but when you design for a web you need to Be very precise about the positioning of the elements you need to end the best way to do that is to use grids and Mark Bolton who was a speaker at Drupal con and he also Spoke at several Drupal cons exactly about this problem. He has done a great work about it. I encourage you all to Read about it and learn about it. If you are not using grids, you are just probably in trouble Another thing which may cause problems is interactivity You usually don't How many many chances to use interactivity with interactivity when you design for print maybe you can put there some QR code or something like that, but a few years ago it it wasn't even possible But when you design for a web Then there are suddenly many elements like you can have animations you can have forums buttons you can have different jQuery effects and the key the key is to know when and How to use them and I will talk about this a little bit later So this where the difference is between print design and a web design I'd like to take some time and talk about what I consider a successful design to me it is design which where you set a goal and then you meet the expectation and How many of you are from Munich? Is there any? one for me, okay, so Maybe you don't understand this picture, but it happened in Munich and Sergio Ramos kicked the penalty and We weren't really high. So Okay, since we are in Munich. I thought that This is a good a good illustration of how the goal is not met. So First thing is you always have to think before you design Many times it happens even to me it's like okay when I hear the first for the first time about the project I suddenly have this image of this shiny website in my mind and I am in a mood Okay, let's go. I want to design. I don't want to do I don't want to talk I don't want to listen. I just want to design. I want to put this idea which I have in my mind on in the computer and work on that But it's really important that you take the time and Focus on what on the needs not on the picture in your mind Always do the research find out what is the most important thing for the client find out what is the core of his business? learn about What are the needs that he has what is the what is the even the purpose why he wants to design a website? Or why he wants to make redesign? What are the things which are not working on the current website and he wants to improve in the new version? also Find out what is the message that he wants to? To convey or to bring what is who is the target group is the website aimed for children is it for? men in between 40 to 50 years Find out what is the Thing which will eventually make the difference what will make the conversion or the point when For example, the product is sold another idea or advice is always designed for users Users are very interesting They don't like to think They basically act intuitively they scan the page and They click on the first reasonable Link which they find they're also impatient if there is something which is not working on the website if there is something where It's not working as they would like to work it if or if they say too long for them to find the information that will leave they also get very easily distracted and Your goal is a designer is to guide them and help them Keep their focus Another thing is They hate visual noise I call it a digital cost phobia and I know that my eye actually I'm very Affected with this and I feel much better when there's a lot of white noise a white space You know website. It's not very cost Coddered Users like conventional patterns basically they expect that The same task which they perform on different websites They will be able to execute on every website if they log in here They want to look in here everywhere if they have the navigation on top. They want to have the navigation on top everywhere so they are Sometimes users are like horses, you know, they have the Shields on the eyes or how you call it and they just run dire one direction which they help and The last advice which I would help for designer from the design perspective. Yes Think about Beauty versus usability Many times we think that the more awesome effects the more hot new stuff we put it to the website The more of summer it will be But in fact, it's in most of the cases. It's the exactly the opposite For me There are basically two Things which I kind of consider the holy grail of web design and that is a content Is the king and keep keep it simple stupid for me design is Just supporting element It helps users to focus on what is most important and Web its information is the content and our goal as a designers is to help them to find the shortest way to the information or to the conversion point and Use design basically to support the journey I'm not saying that you shouldn't be following latest friends or you shouldn't be trying out all the hot new stuff, but You need to find a way how to use that to support the actual user experience And one thing which we worry often as a designers for like to forget basically is that Maybe 99% of the actual visitors are not designers They don't care. In fact, if the website is In the using the latest design trends, they don't care about the colors many times about the latest cool fonts They simply want to find the information Which brought them to the website? So I would encourage you to learn about usability learn about how to creating wonderful user experience and Think about a visitor and notice a designer. So Just a real Go through again Paint design versus with versus web design What is the successful design we need to design for users? And we need to care more about usability rather than about a beauty. All right, so I'm gonna talk now about The perspective of theme er, what would I tell a designer if I was a theme er? There are several things one is there's this ongoing discussion if designer should be able to code his own designs if he should learn the CSS HTML and My answer to that is Yes Basically design is only 15 to 25 percent of the whole project As a designers who would like to think that design is the most important thing but In fact, there is this other 75 percent which from which the project consists of and in order For our designs to be successful. We must understand what the other 75 percent is So I encourage you to learn about Drupal Build the site for yourself maybe you can build your own portfolio there and Try to understand what are the the elements of Drupal? What is the theme? What are blocks? What are regions? Learn about all the new technologies that come out learn about how mobile or responsive work Talk to developers Talk to them and find I'm sorry find out how they actually use these new technologies and How they actually deliver the project how they how they operate on a day-to-day basis and Also get feedback from them Get feedback on design ask them if this fancy new stuff which you want to do if it's doable if You should change it or if it's okay like this According to Steve Krug Testing with one person a one person or one user is hundred hundred percent better than testing with known and It's true the more feedback you get the better your design can be and If you learn all this it will help you essentially to to put the elements on the place where they naturally would belong in Drupal which can make them seeming easier in many cases Probably the most common issue with designers, which I found as a teamer was in consistency Many times there is a for example a block on home page And then there is the same block on a secondary page and they look completely different Although it's the exactly the same information. It just looks different on different places on the website Or for example, just the book title has different font or different margin margin or border so If possible use the same layout for for views for blocks for headlines font size line hints and all the different Elements also try to design in a generic way For example, don't put to Don't put same block into different sidebars. It's easier when there is only one block and it's on the Same same place Keep try to keep things simple don't necessarily over complicate your design Another thing which we need to think is content navigation. How will user get from point A to B? How will how will he get from home page through? Some listing page to the detail don't miss read more links for example or breadcrumbs Also use standardized layouts Grids I use 960 grid with 12 columns. I found that working best for me Also be consistent in image sizes. Many times We just like that. There is some space. Okay, I'll fill it with some image and then on other place the same image is larger or it has a different shape and It would be just much easier if they they look the same and also I think For me as a visitor it would be also better if things look the same So the last advice which I would give as a theme or it's clean up your Photoshop file If you look at this too Pictures you'll see that there is a clear difference between the first where all the layers just have some random name They are organized as they came There is no logical Way how they are around or grouped so always name the layer always arrange them in a way how they appear in the design go from top to bottom and by specific parts header sidebar block and For example a single node also When you are designing with CS 5 or CS 6 then Maybe themers are having some older version of Photoshop and if you use too many groups nested groups The file can actually be corrupted and they might not be able to Open it all it will end up something similar like this So to summarize learn how to code your design be consistent and Always clean up after yourself. I'm getting to the third perspective, which is From the point of view of CEO of the company as a CEO there are basically two things which Which I am interested in in project. I of course want it to be successful. I want the client to be happy, but I Want that it would be cost-effective and I want that it would be delivered on time So I'll jump to cost effectiveness first As I said design is 15 to 25 percent of the time but what is important is that how the design will affect the the actual length or the time needed to theme or to develop the website To designs for example, they may cost the same amount of money, but the development can For one can be I can take double of the time if you make some mistakes or if you Do some things which for example some of the things which I mentioned earlier. It can just add overhead and Can be just more Expensive So what are the factors which affect the cost of design or theme? It's everything which I mentioned before Plus several others one is the first thing which we started to do is we always design a style guide for a project it's a page or it's a Photoshop file where you have all the all of the Drupal elements where you have all the HTML elements and you design them many times it's very easy to forget for example to design tabs for content editing or to miss out some details in the footer or There are many things which can be just missed and if you have this kind of design manual then themeer exactly knows What he should use and where Also what we found out to be very effective is to annotate the design with Kind of post it notes or descriptions Where you will describe What exactly which? Part of the page is for for example there is There is a block with some some notes some listing for example of news You can say that this is the news this it's coming from you know, it's a view view of news content type or this is Some slider on the home page and they should be Using separate content type for it and if you're not sure how exactly it should work Talk to developers or to project managers, but this can speed up the themeing where much Another advice is design only what is necessary many times There are pages which basically look the same They have the similar information, but for example, it's just different content type or it's different Category of the same content type And you don't need to design all of the pages just design What's what's necessary? Also try to use real life content only if possible Loram ipsum can sometimes be very risky because it can look very nice, but then also Think about what is required and what is optional content because if you put Optional content everywhere and you fill it and you design it looks very nice but then in real life the users don't feel this kind of information it can suddenly just look very broken and So keep this in mind and try to Use real life content when when it's just possible Also, it's much easier for a client to imagine or to Do accept design if there is a real life content rather than just some dummy images or text so another thing which considers me as a CEO is delivering on time One thing which helps is to define all of the terminology in the Bay in the beginning of the project Try to find out Exactly which kind of labels for example you should use for for different content pieces What should the button say what should be the Read more for example link also What what are the? Categories for example of the content because many times we design For example a breadcrumbs or some navigational hierarchy With some very short category, but for example category can be for two lines and suddenly breaks up breaks the whole design and If you define these kind of things in in the beginning then you can save a lot of overhead by coming back and fixing and Presenting and fixing again Okay, always try to QA your designs with a project manager or if possible so with client Get as much feedback as you can but don't forget to set some rules for feedback always set rules for for example a rounds of feedback or rounds of changes and Don't leave the project open-ended any times it happens that we are getting close to delivery and then We think we actually finish the project we started design it We start to theme it or develop it and we find out We forgot to design this specific content type or this specific page where it looks just completely different So always double-check that you have design everything because then it can again call some delays in production or when working So Cost effectiveness and delivering on time those are the two key things which I Am concerned about when I look at the design process from the CEO perspective I Also have some resources which I Which I some of them created and some of them I have formed There are several Drupal elements or style guide created for Drupal specifically and Feel free to get the links from the slides the slides are already uploaded to the session description page There are also modules Which basically will create you a page with all of the HTML elements so we can then theme them very easily And also, there is a video from LA Drupal With the title your design as a theme sucks and it's also a great Resource to understand how the worst thing can how Can be beneficial from you to learn So thank you very much for your for your time, and I hope that you have learned something and I would like to ask you to feel the To give me some feedback on the session and I would like to open up for some questions if you have any Yes Okay Yes, so the question was as the web is moving forward with responsive design if I found it harder to design a Photoshop And I think that you are asking if should be mobile first and design in a browser and these kind of things, right? Okay To be honest there are several or there are a few cases where I would be concerned about that and especially if it's maybe a small project and For example, I used to design some of the things in a browser even before The responsive thing was there but because it was just faster for me not to spend some time on in the first Photoshop, but just to create the design in a browser, but to be honest I From the experience or from the projects which we have right now We are probably not there yet, so I found it better to design a Photoshop at this point and This can change very very soon I'm sorry, we are we are using compass. Yes, but many times it takes Time to shift the thinking of the whole company, you know and all of the processes which are then tied to Yes, yes or the projects which we have are For most of the clients which we have mobile hasn't been the number one Reason or so, yes. Yeah, also we designed a mobile application. We designed it in Photoshop and then Tested it out in in some phone or whatever and then Came back to change some things We tried it on one project but we ended up actually going back to wireframes and design from them because It was a project where we've been working with some other company and they were basically building the design Building the website from the out of our wireframes and we've been waiting for them to finish and to design and Maybe it was from for a time reason. We decided to go to work from wireframes but I Don't know. I don't really have a lot of experience with this kind of approach Any other question? All right, I'd like to thank you to all and Hope to see you Sometimes next and also feel free to come and grab some infographics or Thank you


Monoclonal antibodies, MABS, against the envelope, E, protein of Zika virus, ZIKV, have shown great potential as therapeutics against the Zika epidemic. However, these MABS can cause severe infections if they are used as a therapy due to antibody dependent enhancement of infection, ADE. To address this issue, researchers developed a broadly neutralizing flavivirus MAB, ZV1, with an identical protein backbone but different FC glycosylation profiles. Three glycoprotein variants were produced using wild type, WT, Chinese hamster ovary cells, CHO, or Nicosiana benthomiana plants, Nicosiana. These MABS were tested for their ability to neutralize ZIKV and Dengue virus, DNV, infection. The results showed that the WT and CHO MABS had similar neutralization potencies against both ZIKV and DNV, while the Nicosiana variant had no ADE activity. Additionally, the Nicosiana variant had higher ADCC activity than the other two MABS. In vivo testing showed, This article was authored by Mingyang, Haiyang Sun, Huafanlai, and others. We are article.tv, links in the description below.


Hi there, Joe for Jaspy's casebreaks.com here coming at you with a pack of 2019 Prism football. And it's the last filler, the only filler for Pick Your Teams. The only filler we had to do to give away the final remaining teams that unlocks Pick Your Team 12, Prism 12, but it's coming up in the next video. Big thanks to this group for making it happen. All teams are in and let's roll it to the break first. Let's roll it, randomize names in teams 3 and 2, 5 times each. 2, 3, 4, and 5. Subject, yes, I think so. I think that Luminary's book didn't, like, value-wise. I don't think it went for as much as everyone in the chat at the time thought it would. But in terms of just as like a spectacle, yeah, I think that's kind of the coolest thing that I've ever pulled. 3 and 2, 5 times for the teams. We're just starting the fourth quarter of the national championship game. Washington has the ball only down to touchdown. All right, no trade windows here, but there's the first half of the list right there and the second half of the list over here. Oh, you can't drop that. Can't drop that. All right, and we've got an auto. Nice. Layton Vandress, sensational signatures. Excellent, that's going to be for Nick Stover and Dallas. There you go, Nick. Always nice to get like a little bonus auto out of a filler pack. And we've got a rookie Debo Samuel and a Drew Locke. Nice rookie Debo going to Nick T and the Niners. So Nick S, Nick T, getting a couple nice things there. All right, now let's flip back over here. Let's gather everybody's names. We'll use a different dice roll for the team giveaway. And it'll be the top, uh, the top 10. We'll get teams top 10 after two snake eyes. That's easy. Good luck. One and two. Now you can already see from 11 on down. 11 through 32, sad times. But thanks for giving it a shot. Top 10, happy times because you've got a team the next break. Douglas, Nick S, Nick T, Nick T, Dan, Douglas, Stephen, Ethan, Stephen and Nick S. Congrats to the top 10 after two. You got teams. Nick, you got my Raiders. Stephen with the Titans. Ethan with the Falcons. Stephen with the Dallas, uh, with the, Stephen with the Miami Dolphins. I'm getting ahead of myself here. Douglas with the Cowboys. Dan with the Patriots. Nick T, Saints and Giants. Nick S, Broncos and Douglas with the Commanders. We'll put, um, we'll put Prism90 next to your name so you know that's where you want it. Put those next to your names. We'll see you in the next video for the break. Jasmy'scasebreaks.com.


Live from Bahrain, it's theCUBE. Covering AWS Summit, Bahrain. Brought to you by Amazon Web Services. Okay, welcome back everyone. We're here live in Bahrain for theCUBE's exclusive coverage here in the Middle East for AWS Amazon Web Services, new region being announced and being deployed early 2019. I'm John Furrier, your host. Our next guest is Paseel Hamad, assistant professor information systems at the University of Bahrain. Welcome to theCUBE. Thank you very much. Thank you for having me and welcome to Bahrain. It's been a great pleasure. Our team has been blown away. It's been a very surreal experience. We're really excited. We learned a lot and we're super impressed with the people in the culture. Yeah, thank you very much. It's a Silicon Valley vibe. It's got community, it's got money, and it's got now an ecosystem that's going to be flourishing. It really looks really good. Yes, yes, hopefully we'll have, as I told you, we'll have the little desert circle valley soon, inshallah. Now, Silicon Valley, I wanted to bring this up because one of the big success stories of Silicon Valley is it let the innovation flow.  But they have two universities. You got Stanford and University of California, Berkeley. Of course you got UCLA and Southern California. So research is really important and also the role of academia is really important. Not in the sense of like just being too hardcore but creating a ground for free thinking, entrepreneurship, and then as the kids come out of school, sometimes dropping out, they just want to start companies. All right, this is big. How are you guys looking at this massive wave of innovation coming? Because it's got to be taking you by surprise. You got the old way to get the computer science, here's some IT, like, oh my God, here comes cloud. All these new languages, data science. It didn't take us by surprise, if you'd say. We were been expecting this change for quite some time. The thing is with the leadership of the government of Bahrain as well as with the leadership of the university, they want to make sure that we are able to produce talents to the economy. And Bahrain, the University of Bahrain was involved from the early on steps in the cloud first initiatives or cloud first policy. So we were aware that we have to change the ways that we operate in order for us to produce these, to not produce them, but to shape these talents in order for the students to compete, not just locally, but internationally. So you've seen it coming, okay, that's fair. But the wave is here and there's multiple waves coming in. It's going to be a 20, 30 year generation of waves. So you got to get the surfboards to use the metaphor from California. Sorry, I'm from California. There's no waves in the desert. The water is 91 degrees. But as a metaphor, I mean, this is what's happening. So how is that shaped some of the curriculum, some of the interactions? Certainly the Economic Development Board, the EDB, has been gung ho supporting this entrepreneurial resources. So when you're going to come in and you're going to be feeding the young kids the nutrients, what are you giving them? New languages, new IT, what's the plan? Let me just try to focus the discussion on the university and what the university is doing. So what we are doing here at the university now, we have partnerships with AWS and now University of Bahrain is an AWS Accredited Academy. So we now provide curriculum that is aligned with AWS so that when our students take these courses, they will be able to take the certification and then be certified upon graduating. So in that sense, we're providing the talent and trained talent to start working immediately with limited or lower training needed. As well, in terms of research, if you would say, it used to take us a long time if you want to research something. We need, if you want, for example, the data centers, if you wanted, let's say, for example, some experts in artificial intelligence, it would take us a long time and a lot of effort to do so. But with AWS, all you need to is just log into the console. Amazon is doing all the research for you, they got all the tools. Yeah, so if a student is, or even a researcher is interested in, let's say, for example, artificial intelligence, instead of waiting for the instructor to be knowledgeable, waiting for an instructor to be knowledgeable about that part, they could just start plugging in and playing with it. And then with that experimentation, they can do a lot of great stuff. Yep. Yeah, what about software? Let's get back to software. I want to get to the IT in a second that I know information technologies in your wheelhouse. But software is driving a lot of the DevOps and the cloud-native IT disruption. Amazon is now winning a lot of that business. That's the main Amazon web services. But they started with developers. So that's where the software developers are. How is that developing in the university? Are people taking to software programming? What's the curriculum like? So what's the story? Yeah, so we're not going to just focus on creating a curriculum for cloud computing. Cloud computing now is embedded throughout all the curricula that we have in the university. So in any, let's say, program, whether it's in IT or even arts, as well as business, there's a small component of cloud computing telling them what is cloud computing and what can it provide for them? So you're focusing on cloud first? Yes, cloud first. And then we have these courses designed especially for IT students. As I told you before, we are partners with AWS, with the AWS Academy. So now we'll be able to provide a curriculum that's actually updated by AWS. And all we have to do is just deliver this. How long have the courses been out there? Are they released yet? Are they been out there for a while? They just has been released and we have almost 50 students now taking these courses. Well, you know, a university of California in Berkeley where my daughter goes, the number one class is Intro to Computer Science and Intro to Data Science. It seems that the younger kids that want that intro to programming and intro to data science. Is there any data thing going on with Amazon? They do a lot of big data. You got Redshift, Aurora, you got IoT. SageMaker, one of the most popular features of Amazon is like, I think it's going to be the most popular, but... So in our department, for example, the Department of Information Systems, instead of just having a bachelor's in Information Systems, now we have smaller tracks within the program itself. So if the student is, let's say he's interested in cloud computing, then he can take the cloud computing track and take all these cloud computing components apart of the curriculum. If he or she is interested in, let's say, big data, we have a big data track within our program. And the government's really behind you on this, right? Yes, yeah. The government is behind us in the way that they want students not just to rely on having to secure a white collar job. They want them to create the jobs for others. They're trying to create this culture of entrepreneurship. So you start your own business, you don't have to wait for opportunities, you make your own opportunities. With the help I think of Temke, EDB, all of them are giving them the platform to just flourish, to just go into the world and then create opportunities, not just for themselves, as I told you, but for others. So final question I want to ask you. Okay, personal opinion, what do you think's going to happen with after the Amazon region gets deployed? You're going to get these training classes, people are going to be coming into the marketplace, graduating, what's the impact? What's your vision? What's my, I don't know. Any guesses? You had to kind of project and connect the dots. I think there's going to be a huge move towards towards a small business because it used to cost a lot. Opening a business or starting a startup used to cost a lot. Now it doesn't cost that much if they choose, let's say for example, cloud computing, or if they choose AWS in particular. It's just going to cost them the operational expenditures. There's no capital, a huge capital expense that they have to put in place. So my projection is that we're going to see a lot of small businesses, more newer apps and newer ways to go around business because of these opportunities offered by. It lowers the bar to get a new innovation going. Yeah. And certainly it costs less than provisioning servers. Exactly. So if a company wants to start up a business, if it's a small business, they don't have that much time to spend on servers, spend on many. Well, Vasil, thanks for coming on theCUBE. Really appreciate it. Thank you very much. Thank you for having me. What's going on in the university when we come back? We'll certainly be back here in the future covering you guys. There's certainly a lot of action Dubai right around the corner. This is a new hot area for innovation for theCUBE covering our first time here. We're excited. I'm John Furrier. You can reach me on Twitter at Furrier, F-U-R-R-I-E-R or find me anywhere online. All my channels are open. Stay with us for exclusive coverage of AWS's new region here in Bahrain. Be right back.


So what we decided to do was to set up an open access publishing company, publishing monographs, and we'll have a little bit more detail in a second. So it's with that hat that I'm here, looking at open book publishers. Just a little tiny bit of background and it's open access, it's online. So I really do encourage any of you who want to trawl while I'm talking, go online, have a look at the website and I'd really like if you've got any thoughts or feedback and things like that, it's always very gratefully received. But I took a screenshot, rather than try and do this live, I'd seen a couple of presenters previously fighting between the two and I thought, you know what, I'll just do everything with screenshots. So anyway, it's all screenshots. So that's the sort of homepage, a couple of things to point out from it. So at the bottom there, we've got, so far we've published about 118 titles, we've been going about 10 years now. We've got about one in three quarter million book visits for those titles in that time. And it's a global audience that's coming through. So it really, you know, Google Analytics is that there's 217 countries, you know, I don't think there's only about 180 in the world. So I don't know quite how Google Analytics does it, but anyway, there's quite a few that have come through. When you look at those analytics maps, alas, North Korea is still white. So we don't seem to have got anyone from North Korea, but otherwise it's pretty green. So all the books are open access. Now what does open access mean? Mostly it means CCBY. So most of our books are CCBY. Not all of them can discuss about. There's some that are NC and D and we can talk about these various licenses, if any of you are interested. And just as part of the, just to point out, we don't charge authors a publishing cost. So there's no compulsory charge there. We do ask for them to apply for grants if they're aware that any is there, but there's no compulsory payment. So it's not part of the decision process. Just quickly, we're a nonprofit community interest company that we set up just to make sure what we were concerned about was that the good quality, you know, it's a standard thing. I'm pushing it in the open door here, but good quality research, particularly in humanities and social sciences, wasn't being made publicly available because it was behind the payroll. So that's what we were trying to address. So presently we're publishing about 24 titles a year. We primarily publish peer reviewed research and you'll see one that I hope will all interest you and immediately go in and have a look. In fact, many of you might have been contributors to this. So there's a few nodding heads around the audience. So thank you very much. But it's those sorts of works that we're looking to publish. Really good quality, highest quality research monographs. We have a very rigorous peer review process and it's very, very, it's the only traditional part of our model. We really, really want to be publishing work whose alternative outlets would be the very top university presses. That's the level that we're looking for. Okay. But amongst those 118 titles, there are 10 open access textbooks and five works that were created as part of a student and coursework process. And it's those, that area that I want to look at now and think about some of the issues around the open access, the textbooks and then the course content that we've published. Okay. So the textbooks, we've got 10 OA textbooks, three of them are based, are targeted at university level. Two of them at the bottom there in classics which are published in conjunction with Dickinson College in the US and there's a big website that backs though with those publications. One of them is in economics and we've published seven titles now which are targeted specifically at the UK A level students, specific courses and structures within the UK A level. And again, this is primarily where I want to be thinking for the talk now. At the top, we've got one on ethics which is targeted specifically at the philosophy and religious studies courses in A level. We've got one on mathematics which is targeted at the step examination here which is the mathematics exam that sits above A level for people going through to study mathematics. And we've got five in classics, all targeted and you probably can't read but this is like Tacitus, particular segments from these works and those segments correspond to the assigned texts from the ancient civilization course for A level. So these are really, really specifically targeted at A level courses. This is would be the sort of the homepage for these and I'll just quickly briefly show you what happens there. We've got free editions, we've got a PDF reader, online PDF reader, there's HTML, there's a PDF which is free to download. We also have some EPUBs and MOBIs which we're charging for and we've got paper and hardback editions which again we charge for and we can talk about why we do that et cetera later if anybody's interested. But the free editions of our textbooks are like that. On the more recent books we've also got XML which can be downloaded for free as well. We have a facility called OBB customized which allows anybody to come in and customize the title that can be mixed and matched across ourselves or other content can be brought in and we can republish that as whoever wants so that that facility is there. I've got, on all the titles there's a viewing statistic and so here in this case it's saying viewed just over 43,000 times and there's a little details button there that if anybody's interested can go through and it gives a much more detailed breakdown of where the book has been visited. So by a book visit I mean somebody's gone to the PDF reader, downloaded the PDF, gone to the HTML. We'll talk about that a little bit more in a second. And then finally for these classics books and this is one of these reuse components where open access is not just about free to read but it's free to reuse. And so here is the situation where there is in the classics community there's a group, a website called the Classics Library which is a huge wonderful resource where teachers are sharing their content and the Stephen Jenkins who runs that said could he upload these books through a WordPress site onto the Classics Library. So here is the version of that uploaded onto there and of course along with that comes commentary functions and the ability for teachers to come in and supplement or compliment the work in some cases adding videos that complimented it and other cases comments and clarifications and things like that. So here's a really reuse example where the book's being picked up and it's being put up onto another website and engaged with the broader teacher community. So I wanted to think a little bit and we'll come back to that because this for us and what we're recognizing is that that level of engagement is hugely important for the uptake and the use of the work. It needs to be coming into a community. It's no good just us putting up stuff and saying look at CCBY. You know one's got to connect it as well and so that's something which one of the reasons really an excitement of being here is to think about how this high quality content what could or should we be doing not just with textbooks more generally to increase the engagement and the reuse of the work because that is a really important power of what CCBY provides. So here's usage stats for the seven textbooks. So these again all A level textbooks and you can see that the online readership is you know in the 40s of thousands now you know student enrollment for these courses is quite small in the you know one one and a half thousand. So there's a lot of engagement going on here and if we break that down a little bit we've aggregated to talk about usage statistics we've aggregated statistics from a number of different platforms that we're aware of which are hosting this work. So you can see actually the Classics Library is a huge source of traffic for this work. So it's really really been important that upload by them third party upload reuse of it has been hugely important for the engagement of this work with that with the community. We've got our own OBP PDF reader HTML reader PDF downloads Google Books is sitting there again another important source of traffic across all areas. The discovery and use of those works on Google Books has been important. In addition is a primarily French platform and I've got World Reader it's a little tiny percentage in this particular case but World Reader is a wonderful service providing 2G technology for reading books through Africa so that they can be read on mobile telephones. Now you try and read a textbook on a 2G you know it's a pretty miserable reading experience. The fact that people are engaging in doing it shows how much need there is because you know if there was any other option they wouldn't be choosing to read it on 2G. By country you can see there are Classics Books primarily the United Kingdom. Got to look at the time. United Kingdom dominates as you'd expect these are targeted for the UK audience but you know the US is quite large there. We've got another another you know quite a lot of the rest of the world which is engaged with these works one way or another presumably not because they're sitting A-level exams in June and so and the United States and we'll come back to this in a second to some things like the Open Textbook Initiative I think have been important in bringing the work and making it available in some of these other audiences as well. Okay I just want to compare that with the Ethics Textbook. So the Ethics Textbook is again very very targeted at the syllabuses at A-level and actually the stats are really dramatically different here. In fact it's the United States that has picked up on that. So what I should say is that these books because they're very high-level books for a school level they're actually also being adopted at the first year university level in the US. And so what we're seeing here is that actually that Ethics Book and again I suspect it's because of things like the Open Textbook Initiative that those are being made aware and teachers are engaging with them and recognizing those works and beginning to adopt them. So that's a higher proportion than the United Kingdom. In the United Kingdom I think on reflection we probably haven't connected to that teacher community as well as we did with the Classics works and that's something that we now need to go away and really think about and any advice would be warmly welcomed. How do we engage with that same community for the Ethics as we were doing with the Classics? Because it's looking like we're not quite making that hit here as we could have been doing. Okay, if we add to the stats sales data one begins to get some process towards a business model here. So you can see that on the whole sales have been around the 1,000 mark, 1,000, 2,000. Now we're very happy and comfortable with that. So it costs us about three and a half thousand, four thousand pounds to produce the book and then with some overheads on top of that we would need to be covering about five and a half thousand, five thousand pounds something like that to cover our average costs. So if we're making, if our markup is around six pounds of book something like that, we're going to need to make sales of about 800 to 1,000 to really start breaking even. And we're doing that with these textbooks. So that's something that I would just want to put down here is there is a business model here that can sustain the production of this content through the sale of the printed works. If we look, I've got down the side, if we've got the conversion rates down there, you know, you guys are used to digital marketplaces. It's not uncommon to have conversion rates at about one and a half, two percent when one's got free content and one's trying to sell premium content on there. If you look at our model in the same way, then we've got the free versions and we're trying to sell the paper versions to cover our costs. These conversion rates are high in that sort of online world if you put it in that online area. So people do want printed versions of free open access textbooks and there is a business model there to be able to sustain that. That's able to sustain it in classics. Now classics doesn't have the biggest student base. So, you know, in some of the subjects that have a much bigger student base, there's clearly more potential there. OK, so just quickly summarizing that bit, as far as OA textbooks are concerned, we're getting a lot of readers. There's a lot of engagement with the work at the readership level. Relatively high conversion rates. It looks like there's a sustainable business model there. We, well, engagement with teachers in third parties and platforms I think is really, really important and something that we are really looking to work on and think about how to develop because that's really how the work starts getting a life of its own is through that sort of engagement. Any advice, any thoughts about how we could be doing that better would be really welcomed. To date, we've had very little use of the OPP customized and what use we've had has not really been structural changes. It's been more cosmetic changes. And so thinking about how people would engage with the content to redevelop it, to take it, to own it, to use it for their own purposes, that's something that we haven't yet seen and we're thinking about how to push that through. Clearly, things like the open textbook libraries, Google Books, these big platforms of discovery are clearly very, very important. As far as some of the difficulties are concerned, the open access, the textbook market in the UK is sewn up by a very cosy relationship between the examination boards and their publishing partners. And so some of the difficulties that we face is that the examination boards give accreditation status to specific providers. Presumably, there is some money transfer that goes one way or another, it is associated with that. And in some cases, teachers don't feel obliged to take the accredited one because they feel that that's the one that will prepare the students the most. So there is a very, very cosy relationship that's developed and I think I would really encourage as a movement, we don't have that K-12 movement in the same way here as we've seen in the US and thinking about how to break that relationship and free that relationship up, I think is really, really important. So for example, the timing of the course content, the actual, I said that many of those classics books were targeted at specific texts. Those texts are known by the examination board, I think about 18 months beforehand, but they're not released to the teachers or to anybody except the private partner that they've made until about nine months before. So to get those books together, you once got to scamper fast, which is not a good way of doing things. So an easy when would be just to say, ask them to make that announcement another year earlier and give the teacher community and the academic community time to develop the resources for it. And finally, just I've been given a three minute warning and these are gonna be long minutes. I'll talk very fast and it'll extend. Commissioning content, we've got a business model that covers costs. We do offer authors royalties, not all of them take it, but we do offer royalties to authors and the royalties are in the low thousands. Now that's not enough to buy you out a job to go and write a book. So if it was gonna do commissioning, one's got to think more carefully or one's got to think if one's gonna have a systematic provision of open access resources, we've got to have another way of coordinating teachers to make sure that we are always providing the content as required. So some sort of coordination device is required to be attracting and assigning works. But there's lots of authors out there who want to do this, not for money, but because they believe in education. And so harnessing those would be valuable. I've got two and a half minutes left. One minute I'm told. Okay, I just wanna talk quickly about the other part of it which is we've got three works that were created as part of the teaching environment. So the first of these was a translation of Dennis Diderot's Ramuse Nephew. It's a beautiful translation by two Oxford academics, Kate Tunstall and Caroline Warman. The editor wanted to have a lot of biographical and musical footnotes because there's a lot of references that present readers might know. And so they worked with Pascal Duk at the conservatoire in Paris and recorded as part of the program for the musicians and the recorders and the directors. And as part of the student program was to create 14 tracks for that, which we've then embedded in the book and I do have the book, but embedding music into paper is difficult, but we've just got little QR codes so that you can play it on your telephone. But of course all the digital ones, it's all embedded in there. And all that music has been created CCBY so it can be uploaded, hadn't been recorded before most of this. So that's one example. Then Caroline Warman, you'll see there, went on and worked with an anthology of works from the Enlightenment about tolerance. Now this was a direct response to the Charlie Hebdo attack in Paris. And the French 18th century, French literary society brought out a pamphlet of Enlightenment writings about tolerance. Caroline Warman saw that and said, we should translate it. She took it back and made it and assigned it as the translation course for the second year French students in Oxford. So 100 students plus their tutors then spent the first term translating this work, which was brought out then in time for the first year anniversary in the January 2016, it was then released then. So this was hugely, this was a huge engagement. All the students really engaging in this. And I think it was a very productive educational experience for all involved. And of course it got picked up by the newspapers of the Guardian and the BBC and things like that all started reporting about how Oxford students were responding to the Charlie Hebdo attack. So it was a very positive experience I think for all involved. So much so that it inspired one of her colleagues to do a similar thing about anthologies, about the idea of Europe for the Enlightenment. All again in this case targeted, it came out in three different languages in English, German and French. And the releases were targeted for the elections. There was the national elections in France and in Germany and there was a Brexit vote here that some of you might remember. And so this was brought out in time for those to try and bring through and reinforce what the underlying concept of Europe was.  Again, an extremely powerful learning process for all those involved. Okay, minus one minute. So I'm talking backwards but some quick lessons here students do wonderful things if you give them good tasks and good direction. The second is that it's catching. Once you've done it, you wanna do it again because it works so well. All of those projects worked really well because the primary academic behind it was deeply engaged with it. And their credibility and their academic rigor was going to be lying on the final work. And I think that was really important. It really engaged the students because there was deep involvement by the academics involved. And of course, in this day and age if you're gonna get academics to put that much effort into it, you've gotta reward them. And so there needs to be some recognition system for that type of process in the promotion structure. Caroline Warman was awarded the teaching excellence, teaching engagement awarded Oxford because of the work that she'd done on the tolerance volume. Okay, so that's it. There's some contact details for both open book and for me and a quick plug, the person who creates all our digital content is going back to Italy and we're looking for another one. So anybody who knows anybody who wants to work doing that sort of thing, please tell them to get in touch. Such a fantastic presentation, Rupert. Thank you very much for sharing all that with us. Lots to take away about open textbooks, about open business models. Again, I'm inspired that there are people out there that are making, creating and sharing open content. Their actual job and paying the bills with it. I think this is incredibly encouraging. So despite you almost self-censoring yourself as regards timing, we've got plenty of time for questions. So do please, if there's anybody in the audience who has got a question that they would like to ask, please raise your hand. Right at the back there. I'm afraid I can't see who that is. I'm sorry if you could start with letting us know your name and where you're from. It's Anna Thomas-Quinn, I'm from the Open University. Hi there. Hello. I'm interested in the translation initiatives that you have presented at the end and what was the cost of getting those books published through your company for the teachers or for the institutions and how was that funded? So as far as the direct publishing costs was about the same as the others. In fact, we ended up doing quite a lot more work because we put links through to the original content. So the translations were there but then within OBP we then linked it back to the original content so you can travel from there. So there was a little bit more work in there so it was probably a little bit more expensive than what I was saying but it's in the order of about 4,000 pounds. It cost us to be able to produce those works. As far as what the... Again, what we've got is a model that says if you have grants, then please apply for them. I think that we got a grant, but I can't remember if it was a full grant or not. I probably should know. From the 18th century French Literature Society that put some money in. So there were contributions that came through but I would have to check whether they were full contributions or not but it's that sort of order. We just ask for people to apply for whatever they can and we take whatever we can. But if it's 100 pounds, we say thank you very much. If it's 1,000 pounds, we still say thank you very much. If it covers the whole cost, we still say thank you very much. But it's not a requirement, it's not part of it.  I mean, I guess I could just say there's three strands to our business model. The one is those grants that comes about a third of our net income comes from that. We get about a third of our net income from the sales of printed works. And we have a library membership scheme that academic libraries join up to. It's about 300 pounds a year. There's some benefits that go with that but that supports also what we do and that's about a third of our income stream as well. Have we got any further questions from the floor? It looks like people are realizing that the bar is in fact open. I, however, have a final question. Have you come across the work of Martin Eve at Open Lib Hums? Absolutely. Do you work with those guys? Yes, yes, we do. At present, the Open Library of the Humanities is not doing books. They have a, originally when they set up, I'm not sure if the plan has changed, it was to involve four publishers in book publishing, of which one of them was us. And in fact, we've published a book by Martin Eve. So one of our works is by him. So yes, fantastic. Exactly the community that we need to be building and working with. A lot of really encouraging work in Open Access and Open Publishing, especially in the humanities and social science, where the research culture is around the monograph. I'm just rambling and asking my own questions. I could very easily do this in a different room and let you guys go. So I'd like once again to thank Sam and to thank yourself for two excellent and inspiring talks to close the conference on. So thank you very much for that. Could be an usual way. We've now got a short.