text:
HomePlatformPricingservicesBLogDevelopersGet Started
8base.comDocs
Go back to 8base Academy
Setting up Multi-tenant Data Models
Data Builder
8base Console
Sebastian Scholl
@SebScholl
Sebastian Scholl (00:04)
Hey there. Sebastian, Product Manager here at 8base. Today we're going to be talking about multi-tenancy. Essentially, let's break down what we mean when we say single instance multi-tenancy. Really all it is at the end of the day is meaning that a single application or a single database is serving multiple customers.
When we start to think of that word tenant in the abstract, a customer could be a user, it could be a company, it could be a user account centred around a specific project. There's many different ways based on the application that you're building the context of tenancy might change.
However, when approaching the architecture of a single instance multi-tenant application in 8base, there's a few tricks that we can show you on how you use a combination of roles and data model to really enable these type of applications to both work as well as work securely and performant for your application.
One of the early use cases that really inspired the vision of 8base was to make the development of single-instance multi-tenant SaaS applications significantly easier. However, let's just break that down really quickly and talk about what we're saying when we say all those words.
When we say single-instance multi-tenant, all we really mean is that a single application or single database is able to serve multiple customers. That is done by making sure that the data is scoped to only a specific tenant. Tenant, customer, we can use these words a little bit interchangeably, but what we're really just talking about is the main table or the main record in our database to which all of that tenant's data is logically scoped.
In 8base, this is super achievable, and it's really powerful tool to enable these types of applications because using data model, with the roles and permissions engine, we are pretty much able to create any type of multi-tenant data model structure.
We're going to jump into 8base and look at a current application that I've set up or the back end for an application and talk about how by default, it already is a single instance multi-tenant database. However, really look through that use case of moving that from supporting multiple users to supporting multiple companies and then company-specific or tenants specific settings.
Without further ado, let's jump in and see how this works. Okay, cool. We're going to start here in one of my favorite workspaces, my super tasks backend. Once again, start with a simple data model, simple application domain, and then abstract the concept from there so we all have a really solid understanding of what's going on.
Inside of this application, it is very straightforward. We have a lists table and a task table, and there is a list can have many tasks that belong to it. There's a few fields on each table, but we can just forget about that for now.
Let's talk about this first in the context of single instance single tenant. That means that this would be an application to only serve one user, which would be or one customer, which let's just say that's me. That means that for me I'm using this as my personal note-taking backend.
That means I don't really have to worry about anything other than authentication because if I can authenticate, I'm the only customer. And so I should be able to see everything in the database because it's all my data.
As soon as you change that to needing to support two users or two or more, then suddenly certain tasks belong to one user, certain tasks belong to another user lists, so on and so forth. We're probably going to be concerned about making sure that I don't see person A tasks and person B doesn't see my tasks or you get what I'm doing there.
That's where we need to start then thinking about, hey, how do we perform this type of scoping to make sure that we are only permissioning certain data to be shown to the right user.
I'm sure that most of the applications that you are designing, you're already thinking about in a single instance multi-tenant way, meaning that you have a single application which you have multiple users using.
The first thing that we're going to do here is just look at the simplest way of setting up a single instance multi-tenant application using our to use backend, which we're first going to migrate it from being a single instance single-tenant application, which it currently is, and move it to being single instance multi-tenant where the tenant is a user.
Here in the data model, we already have a user's table because that's every workspace gives you that. Essentially what we're going to do is we're going to first build a relationship between our tasks table, excuse me, our list table and our user's table.
I'm going to drag and drop that over here and I'm going to say that the relationship here is that every list has an owner, and an owner can have many lists. We're not going to do it the other way around. Once again, you can pretty much create any type of data model you want.
If yours needs to be different, play with relationships as is necessary. But right now we're going to say the user can have many lists and every list requires actually, we're going to leave that unchecked right now because I have some dummy data in here. I don't want to have to delete some of that data.
Every list belongs to a user. That's what we're pretty much saying. And a user has many lists. I'm going to create that field. What I'm going to do, I'm going to go into my list table and I'm going to update the two lists that I have in here to say that Sam is the owner of this list and I'm going to leave this other list blank. Sam does not have... On the other list the other list has no owner.
We've established a situation, if you think of it, kind of in a hierarchy where we're treating our user's table as the top of the hierarchy that is the tenant. Everything that is tenant-specific trickles down from there.
We have the user's table, which has lists and lists of tasks. We actually know that a task belongs to a user, not because they created that record, even though that could be one way of doing it, but because that record trickles right back up to that tenant's table.
Now that our data model is set up, we need to now reflect our roles on the API to accommodate that. I'm going to go here to the app services and I'm going to click to our user role where you create a user role. Here now we're going to be able to set those permissions.
Things like creating records, we want our users to do that. We want them to be able to create lists and create tasks. However, we now want to make sure that they are only seeing or updating or deleting the tasks and lists that are relevant to them or that they own.
It could be confusing. This would actually work by just staying the user's records because every record has a relationship to the user that created it. However, that's actually not going to work for us. The reason being is because we want to be specific about how that record is related to the tenant, not just the fact that a certain user created it.
What we're first going to do is we're going to jump into our list table and here we're going to create a custom filter. When I open that filter, what I want to do here is say that, hey, a user can only see a list if they are the owner of that list. That means that if they send a query to the API and say, hey, show me all the lists, the API is only going to return the ones that they are the owner of.
I can do that by saying that only allow a list to be read if this filter passes, this custom filter passes, the owner "is_self". That means that you are the owner of that list.
If you're confused at all about what we're doing here, we have two other videos that really break down roles and permissions, as well as custom filters. I will link them in the video description so you can jump in there, get familiar, and then come right back to where we are.
I'm going to copy that as well as save that and drop that right over here for the update permission as well. You can only update the list if you are the owner.
Before I save it, one thing I just want to mention is that you can have multiple relationships on any record. These types of filters can be a lot more dynamic than this. You could say that one person is the owner, but you could also assign someone as a manager. All these types of configurations are totally feasible. And save that.
Our lists table is properly set up with our user's table treating the user's table as the tenant record. We want to look at tasks. Once again, the way that we want to relate tasks to our tenant is through their relationship to the lists table.
We only want a person to be able to read tasks or update tasks if it belongs to a list of which they are the owner. We're going to do the exact same thing with the custom filter but now on the task table. Go to the custom filter, and on the tasks, we're going to look for the list it belongs to.
Then on that list, we're going to look for the owner, and then that owner we're going to make sure that it is the requesting user, "is_self": true. One thing I was throwing in here, "is_self": true is just an alias for essentially created by "id" "equals" and then a dynamic variable "_loggedInUserId" exact same thing, much more simply written as "is_self": true.
We could say "is_self": false if that's relevant to your use case. I'm going to take that, copy it, save it, and add it to the task table over here. For the simple use case, we've literally accomplished it at this point.
This means that now if you have let's imagine that we log into our task management front end. I log in as one of the users, I start hitting the API. It doesn't matter if there's a filter applied to that.
If they say show us all the records or anything like that, these roles will be enforced and only return the data that's relevant to that authenticated user through the roles and permissions that we just set up.
As long as, of course, the user is attributed the user role. If they have no role, they're going to have no permissions. They are not going to get anything back.
Let's go to the next use case. As I'm sure if you're familiar with 8base or familiar with software, this is bread and butter for you. The next use case that we want to accommodate is, okay, I've been using the supertask backend as the single-tenant user and I realized it was super valuable that I wanted to give access to my friends.
So then I made a single instant multi-tenant application to where now my friends can log in and do their tasks. But now one of my friends says, "Hey, this thing's so great. I want to bring it to my company. I want us to be able to, at my company level, collaborate on tasks and create lists. I want that tenant record to be my company, to which the company actually has many users and no longer is the user of the tenant."
Let's now take that next step of creating the data model needed and then the roles and permissions that are required for that type of enablement. We go back to data, and now I'm going to create a new table.
I'm going to create a table called, I'm going to call it Tenant for the sake of example, or Tenants. We could call it Company, Groups, whatever we want to call it projects. Doesn't matter. Tenants will work, though.
We're just going to give a tenant a name because we can. I'm going to create my first tenant record in my database called Company or Big Co. Big Co is now using our tenant or task management application. I'll do another one called Small Co. Remember, we don't want Big Co to see Small Co's data that would be catastrophic for our business, our up and coming task management startup.
What we want to be able to do here is make sure that we are securely permissioning or securely scoping all the data that belongs to Big Co or Small Co only to Big Co or Small Co.
Let's go back to our schemer. The first thing that we're going to do is build a relationship between the tenant and the user's table. Remember, a tenant is like the company, so a tenant is going to have many users, and we also want to make sure that the resources within that tenant are shared by the tenant.
That means that the users at the company can see the list that people are working on and collaborate on the tasks and whatnot. No longer does our paradigm of a user has their own lists really work. Now, of course, we could create an application where users are going to have their own list and the company list.
This is all possible. But for the sake of simple example, we're just going to say that now the company has the list, and only if you work at the company can you see those lists and work on tasks, stuff like that. Here we're going to say that a company or a tenant has many users. That's totally fine. And a user belongs to a tenant.
Once again, we can make that mandatory if we want to. I'm just not going to do it for now. Once again, if we needed to say that a user can belong to multiple tenants, that's possible as well. In this case, we're just going to say one account, one tenant for a user. First we're going to create that relationship.
I'm going to go back to my lists here and I'm going to say that I'm a delete this owner relationship. Actually, I'm gonna leave it. I've changed my mind. All I'm going to do now is I'm going to say that the list belongs to a tenant and an owner and a tenant can have multiple lists. Perfect.
A tenant has list. We have this tenant record. What we want to do is we want to make sure that there's two ways that you can read a list. We're actually going to dice up here.
Well, the first way that you can read a list is either if you are the owner or if you belong to the tenant, which that list belongs to. Then the only way you're going to be able to update a list or a task that belongs to that list is if you're the owner. If you're part of the company, you can read all the lists and the tasks, but only if you're the owner can you actually perform updates. Let's establish that now.
The first thing I'm going to do is I'm going to go in go back to my list here. Even though we're not running these queries, it's just for the sake of example, it's healthy. For the tenant, we're going to say that this list, Sam's list belongs to Big Co. Sam is the owner and the list belongs to Big Co for which Sam works.
Let's go back to our role. We'll use the user role. We'll just keep working with the user role here. Okay. When it comes to our lists, once again, we're saying that as a user, you can create the list, but which ones can you read?
First off, we can say that, well, if you're the owner of the list, you can read it. That makes perfect sense. But remember, we also want to now add that, well, maybe you're not the owner, but maybe you work for the same company as the owner and that list belongs to that company.
What we're going to do here is we're going to open up new brackets and do an "AND" excuse me, an "OR" so paste that right back in there. Got to get a little better formatter in here. There we go.
The first condition that would allow you to read the list is whether you're the owner. Then the second one is where now we're going to look through that tenant relationship back to the user's table. Remember, we're tying this back to the authenticated user.
We're going to say here. Okay, well, does this list belong to a tenant that has users where... One second, let me try that again. I think I may have gotten the wrong relationship type on there. I'm just going to save that really quickly. Go back in here. Allow multiple users per tenant. I had it backwards. Now it's set up.
Now multiple users per tenant, not the other way around. Then I'm going to go back to app services, go to my user, go to my list, custom filter, and I'm going to go in there. Now when I add that back, I'm only allowing lists to be read that belong to a tenant that has users of which one of the users "is_self".
Essentially saying, if you belong to the tenant to which the list belongs, then you can read this list. Once again, like last time, I'm going to copy this and save it. Now our lists are good. Let's go over that update.
Here what I'm going to do is I'm going to copy it over. But like we said last time, we don't want you to be able to update the list. Only if you're the owner can you update the list.
However, let's think of the example of what if you transferred ownership to another tenant. Maybe in this scenario, you may have transferred a list, there's like a feature where you can transfer the list to another company.
In that scenario, if you're still the owner, you're technically seeing data that you shouldn't be seen. What we're going to do here is instead of saying "OR" we're going to say "AND". In this scenario, we're pretty much saying, hey, you can only update the list if you are the owner and you belong to the tenants that the list belongs to. So a double validation there.
I'm going to copy this, save it, and we're good on the list. Let's do the same thing for the tasks. Here we're going to say, hey, you can read the tasks if the task belongs to a list that belongs to a tenant which has users of which some or any of them we can think of that word in many contexts is you.
Once again, we're going to do the exact same thing for the task custom filter or for update. However, here we're going to say that if the task belongs to a list of which you are a tenant, actually, we just want to make sure that you are the tenant owner. It's actually the same one as back here. Let me steal this one here again.
Here for the task, once again, we want to make sure that you own the list if you're adding tasks to the list. Or we could just say that you belong to the tenant of which the list belongs to. Once again, this is application-specific, but you get the concept.
Here what we're just going to say is that you have to belong to the tenant, the list has to belong to the tenant of which you belong to, and then you can collaborate on the list. That makes sense. I'm going to save that. I think it prettys it up once we click... Yes, there we go.
Once again, at this point, we've accomplished this next level of our application to now, our data model is set up to only allow us to see certain records or perform certain actions on those records as long as the user that's making that request belongs to a tenant record of which those records also belong to.
That's a lot of the word record. I apologize. However, we're going to take it up one last level for this video. What we are assuming at this point is the permissions that are set per tenant are all the same, meaning that okay, well, if you can't or every tenant doesn't want the non-owner to be able to update the list, every tenant wants all their users to be able to read all their lists.
However, as you start to build out more sophisticated applications or have more demanding customers, those things start to change and you have to be able to accommodate those types of changes. Once again, this is totally possible in a pretty straightforward way. What we're going to now do is come up with tenant-level permissions.
Here are how we're going to do that. I'm going to create a new table here called TenantSettings. On this table, I'm going to say non-owners can update lists. Here I'm going to say it's a switch. Excuse me. And true/false. By default, let's just leave it as false. Say it's mandatory.
Non-list owners can update tasks and do the exact same thing here. And false. Let's see. False again, by default, mandatory.
We could go way down the rabbit hole with this, but this will satisfy what we're going to demonstrate here. Essentially what we're saying is that, okay, we're going to create two types of tenant-level permissions.
Pretty much as the customer administrator, excuse me. They will be able to permission whether or not the users in their tenant can or can't update tasks or lists, depending on whether or not they are the owner of the list.
Here what we're going to do is we're going to create two different scenarios. First off is we're going to say that for Big Co or actually for Big Co, we're going to leave it false, false. Oh, sorry, I forgot to do one thing here.
We have to make the relationship between the tenant table and the tenant settings. Here what we're doing is we're going to do a one to one relationship and say that it is mandatory.
The tenant settings needs to belong to a tenant. That's because we only want one settings configuration per tenant. We don't want a tenant with multiple setting configurations which contradict one another.
Here we're going to say that this is the tenant and the related field name is tenant settings. Now when I go back here and let me update this guy.
When it comes to Big Co, Big Co isn't letting their non-owners update anything, you have to be the owner to update it. Even though you can see it if you're not owner because that's how we set up our application. Submit those changes. We're going to add another one for Small Co where they let their users do everything.
We can see that these two tenants have these different settings, which are these values saved in the database. Now we want to tie those back into our roles and permissions engine to make sure that depending on not only the users that send in the query, but the tenant that they are sending that query on behalf of, we can think of it that way that these permissions are taken into consideration.
I'm going to go back to my app services and go to my user role and I'm going to go to my list update and custom filter. What we are going to check is couple things. The first one is we want to still maintain that if you are an owner, you can do the update. We don't want to touch that one.
But now here we have to check two things. We have to check on the second one, that not only do you belong to the tenant, but also that as a non-owner, if you are a non-owner, the settings for that tenant need to be enabled for you to perform an update.
What we are going to do is we have that "AND" statement there. We're going to do a little bit extra nesting because remember, we want to touch it. We're going to say an "OR" statement here and then put that whole thing right in there. That's scenario number one which we already worked through.
We're going to do scenario number two, which is two things have to check out for this one, because essentially in this case you're not the owner. First off is we're going to check that you belong to the tenant, which we have that one right here.
We'll drop that in there. The next one is we want to check that the tenant's permissions allow you as a non-owner to perform that update on the list. If the list belongs to a tenant which has tenant settings of which non-owners can update lists, and if that "equals": true, you're good to go. If it "equals": false, you're not good to go.
Copy that. Save that. Boom. We just knocked that one out. We're new same thing for tasks. Custom filter for tasks. Once again we're going to copy this whole thing here. Actually we don't have to do the double predicate here because we're just making sure that you belong to the first one or that the first one is valid which is you are a tenant, you are a user of the tenant. It's a lot of wordplay.
We're just going to do the second check now. Does that task belong to a list which belongs to a tenant which has tenant settings of which non list owners can update the tasks? If that "equals": true, you're good to go. Save that.
Once again, we've updated our permissions accordingly to now accommodate our final scenario which is not only do you belong to a tenant but that tenant has tenant-level settings which the roles and permissions engine is taking into account when scoping the data it's returning or when permission in the operation that you are sending to the API.
I hope you found this video valuable. Interesting thought-provoking. There's a lot of different ways that you can take this. However, what it does is it gives you a little bit of a foundation on how you can start to think about roles and permissions and data model really working together to create those more, call it sophisticated scenarios for the applications that you're building.
Thank you again for watching. If you have any questions please leave comments, reach out in the 8base community. Looking forward to hearing from you and looking forward also seeing you in future videos. Take care.
Try 8base for free


text:
Desiree Rose Marie Scott (Winnipeg, Manitoba, Canadá; 31 de julio de 1987) es una futbolista canadiense. Juega como centrocampista en el Kansas City NWSL de la National Women's Soccer League de Estados Unidos.

Trayectoria
Desiree Scott comenzó en la NCAA con el Manitoba Bisons (2005-2009). En 2010 pasó a la W-League con el Vancouver Whitecaps y debutó con la selección de Canadá, con la que ha jugado 124 partidos a fecha de 2017.

En 2013 dio el salto a la National Women's Soccer League con el F.C. Kansas City y en 2014 fichó por el Notts County L.F.C.

En 2016 volvió a la National Women's Soccer League de nuevo en el F.C. Kansas City.

Con la selección canadiense ha jugado el Mundial 2011 y los Juegos Olímpicos 2012, donde ganó la medalla de bronce.  Ella se ganó la medalla de bronce otra vez en los Juegos Olímpicos 2016.

Clubes

Palmarés

Campeonatos internacionales

Véase también
 Anexo:Futbolistas femeninas con más de 100 partidos internacionales

Referencias

Enlaces externos
Ficha de la jugadora en Women.soccerway.com

Futbolistas femeninas de Canadá
Futbolistas de la selección femenina de fútbol de Canadá
Futbolistas del Football Club Kansas City
Futbolistas del Notts County Ladies Football Club
Futbolistas del Utah Royals Football Club
Futbolistas de Canadá en la Copa Mundial Femenina de Fútbol de 2019
Nacidos en Winnipeg
Futbolistas de la Copa Mundial Femenina de Fútbol de 2011
Futbolistas femeniles de Canadá en los Juegos Olímpicos de Tokio 2020
Medallistas olímpicos de oro de Tokio 2020
Medallistas olímpicos de oro de Canadá
Futbolistas del Kansas City Current

redpajama_set_name: RedPajamaWikipedia


My research interests are covering different aspects of planetary dynamics: the dynamo effect in the Earth's core, dynamics and thermodynamics of the inner core, of the early mantle and compressible convection. Using analogue experiments and numerical modelling, I have been studying crystallization processes in the dendritic regime, with applications to the crystallization of the inner core (PhD of Ludovic Huguet, collaboration with Michael Bergman). In particular, with Renaud Deguen, we have identified a mechanism of convective translation of the inner core, as a result of the interaction between phase change, heat transfer in the outer core, convection in the inner core and self-gravitational equilibrium. We are working on a similar dynamics for the early mantle crystallization with Stephane Labrosse and Adrien Morison. More recently, my research has been focused essentially on compressible effects in convection. With Remi Menaut (PhD), we are investigating experimental compressible effects in a centrifuge. Increased gravity is also accompanied by Coriolis effects (PhD of Yoann Corre). I am also interested in theoretical aspects of compressible convection: with Yanick Ricard, we have analyzed different equivalent expressions for the viscous dissipation and we have performed a comprehensive stability analysis of compressible convection, valid for any physically sound equation of state. With Stephane Labrosse, Yanick Ricard and Jezabel Curbelo (Spanish collaboration), we are analyzing numerical compressible convection with different approximation levels, from an "exact model" (Navier-Stokes, equation of state, entropy equation) to a Boussinesq solution, with intermediate anelastic models.


Information you provide. When you open a VIP account you will be asked to provide various information including your name, address, telephone number(s), email address and possibly credit card details before you are able to use the service.
Information automatically collected. Our systems capture details about the origination and destination numbers of calls you make as well as the date, time and duration of each of your calls. When your computer Web browser accesses our Web site we automatically receive your IP address which we require to ensure that information is only passed to the customer who requested it. We will also set cookies (small data files) on your computer when you access our Web site to ensure that as you move from Web page to Web page our system knows who you are and provides only information related to your specific account.
Information from other sources. We may also obtain personal information about you from other sources. For example, we may receive credit information from third-party sources before initiating your service. We may also purchase personal information (for example, e-mail lists, postal mail lists, demographic and marketing data) from third parties.
Our website may also use a website recording service which may record mouse clicks, mouse movements, page scrolling and any text keyed into website forms. Data collected by this service is used to improve our website usability. The information collected is stored and is used for aggregated and statistical reporting, and is not shared with anybody else.
We use personal information for a variety of business purposes, including for example, verifying your identity, to respond to your requests for service or assistance, to resolve problems with our services, to create and improve products and services, to suggest additional or different products or services and to protect our rights and property. We may also use personal information to contact you about VIP or third party products, services, and offers that we believe you will find of interest. We may contact you by telephone call, text message, postal mail, e-mail, or other methods. You may opt-out of receiving marketing communications from us at any time as outlined below.
How Can You Limit the Use of Your Personal Information?
We want to provide you with meaningful choices regarding our marketing communications and you may choose to limit or 'opt-out' of certain or all communications from VIP at any time.
Finally, you may follow the "unsubscribe" instructions on any marketing e-mail that we send you.
We do not sell, rent, or otherwise provide your personal information to unaffiliated third-parties except where we believe in good faith such disclosure is necessary to comply with the law or respond to legal process (for example, lawful subpoena or court order), to enforce or apply agreements, to initiate, render, bill, and collect for services and products, to protect our rights or property, in connection with claims, disputes, or litigation, to protect users of our services and other carriers or providers from fraudulent, abusive, or unlawful use of, or subscription to, such services, to facilitate or verify the appropriate calculation of taxes, fees, or other obligations due to a local, state, or federal government or if we determine disclosure is necessary in an emergency situation.
How Do I Access My Information?
You may access and modify your personal information by visiting www.joinvip.com or by contacting our Customer Service Center on 1-800-836-5004 and providing the necessary security information to allow access to your account information.
VIPConnect, our mobile app for Android and iPhone, requests access to your phone's contact list so it can be used in the 'Contacts' section in the app. You must allow this access in order to dial saved international contacts from VIPConnect.
Customer Proprietary Network Information, or CPNI, is a subset of personal information that is created in connection with the telecommunications services that we provide to you. CPNI includes, for example, call records, the services you have with us and certain information about your rate plans and the features that you use. CPNI does not include your name, address, and phone number. Under federal law, you have a right, and we have a duty, to protect the confidentiality of your CPNI and we have adopted policies and procedures designed to ensure compliance with those rules. We will never intentionally disclose your CPNI to unaffiliated third-parties, except as allowed under FCC rules, applicable law, or as explained in this policy. We may however, with your permission, disclose CPNI to affiliated companies for marketing purposes.
You may inform us of any decision to change access to your CPNI using any of the methods set forth above in 'How Can You Limit the Use of Your Personal Information?' Please remember that, should you deny us permission to use your CPNI, we will be prevented from providing you with information regarding our other services or services offered by our affiliates.
You have the right to disapprove, and revoke or limit access to your CPNI at any time and at no cost. Your decision will remain effective until you change it and at no time will any decision to deny approval affect the provision of VIP services to which you currently subscribe.
Please do not call us to change your CPNI access.
We may monitor and record phone calls, e-mails, or other communications between you and our Customer Service representatives or other employees for training and quality assurance purposes and to review specific transaction requests.
This policy does not modify or alter any applicable agreement you have with VIP. For example our Terms and Conditions govern your use of our services and the VIP Web site. If this policy conflicts with the Terms and Conditions, the Terms and Conditions govern to the extent of the inconsistency.
If we are forced to modify this policy due to changes in legislation or for any other reason we will notify you in writing and/or via email at least 35 days prior to such changes being implemented. In addition you may wish to refer to this policy for the latest information and the effective date of any changes.


Home / Posts Tagged "Exhibition stand designers"
The fact cannot be denied that the exhibitions play a vital part in the overall goodwill and sales level of a company. It is quite important to plan the exhibition in a wise way because you not only exhibit your products or services but the image of the company is also attached to it. Well, the stands and banners which are displayed at the event place really play a crucial role and it is vital to hire experienced designers for making the exhibition stands. You can learn multiple tactics by reading this blog because here, all the suggestions are provided by experts.
Exhibition Objective should be clear!
It is important to make your team clear with the exhibition objective so they would be able to participate accordingly. Most of the time, the directors share the exhibition theme with higher management only which is somehow not the right approach. Well, the right thing to do is making a team of all the persons who are going to participate in the exhibition actively. More on, if a person has to play a very small part, try to deliver the exhibition objective to him too. In short, all the participants should be clearly aware of the agenda.
Hire Experienced Team of Designers!
It is absolutely important that the stands get designed by expert designers. So, when you plan the exhibition, make sure to contact the professional exhibition stand designers in Birmingham who can give the right kick to the event objective. The designers basically add life to the exhibitions and whether you go for modular or customized stands, the designer can help you with all types of stands.
If your manager is the one who is going to decide the catchy lines for stands, try to make the lines precise. If the message is getting the reader's more than four seconds, that won't be influencing. Moreover, your event agenda should be very clear to exhibition stand designers in Birmingham so they can go with the results accordingly.
Putting text all over the stands is undoubtedly a boring thing. So, try to add relevant yet eye-catchy images to the stands. Moreover, you can offer some refreshment stuff to the visitors too. Well, it would be better if you engage the visitors in different ways because the successful exhibitions win convert the visitors into buyers.
You cannot naysay the importance of exhibitions because when a company organizes an exhibition, it invests a lot and ultimately, a huge return is also expected. So, it is basically crucial to make exhibitions interesting for visitors and profitable for companies. Well, during exhibitions, a great responsibility lays on the exhibition designers in Birmingham who have to design and present the exhibition stands. So, the designers should know the tactics that can make them an expert of the field and here in this blog, useful tips are provided to designers.
Training is necessary as the designers should know how they can implement the business objective in the best way. There are institutes that provide training to the ones who want to pursue their career in the field of exhibition stand designing. So, it should be your priority to get yourself trained by the experts and for this, if you join a well-reputed institute, you'll get a prominent position in the market.
The practice is obviously needed for making yourself adept enough to deal with all types of exhibition requirements. You should be aware of the tactics to design custom stands and modular stands as well. The expertise can be ensured through practice only otherwise you won't be able to do your best in the industry. Well, in the initial stage, you can do practice by doing various small projects that contain low risk and meanwhile, when you feel that you are done with practice, you can simply move to a large company.
Join a Well-Reputed Designing Firm!
The exhibition stand designers should join a big firm where they can excel in their skills and can go in the right direction. Well, it is also revealed that independent designers earn more than the ones who do a job in a company. However, it is all about investment and the reputation in the market. So, joining a designing firm will basically help you understand the tactics to deal with various situations in the industry.
The more you'll handle things fairly, the more you will become able to handle the designing tasks in an efficient way. So, whenever you receive a designing project, try to focus on all the key areas by understanding the agenda of the client like the designers of Vogue Display do. In short, these are the tactics that all the designers should be aware of.


To enable Shared Ownership, you need to map internal groups to corresponding ticket statuses based on your workflow.
Login to your support portal as an Admin.
Go to Admin > Ticket fields > Status to view the list of all your ticket statuses.
Excluding the four default status values - Open, Pending, Resolved and Closed - you can map each of the custom statuses created to a set of groups by entering them under Mapped Internal Groups.
To add a custom status, click Add Item and enter the details for the status there.
Make sure to include Customer Responded as one of your custom statuses. Map all internal groups to this status. By doing so, you make sure that even when the customer responds, the ticket still stays in your agent's ticket view.
Please note that you also need to make sure that all of your agents, both primary and internal, add Customer Responded as a status in their ticket views for the ticket to be visible to everyone.
When you're done mapping all the statuses to their respective internal groups, click on Done.
Click on the + icon next to your profile picture and then select the New Ticket option.
While selecting a status, make sure to pick one to which the internal groups are mapped.
The Assign to field corresponds to the primary group and primary agent of the ticket.
Depending on the status, you can assign an internal group and agent from the list mapped to the status. The Assign to (internal) field corresponds to the 'Internal group' and 'Internal agent' of the ticket.
Go to the ticket details page of the ticket for which you'd like to set up Shared Ownership.
Under Ticket properties, choose a custom status that is mapped to the internal group to whom you'd like to assign the ticket.
Under the Assign to (internal) field, select the respective internal group and internal agent from the dropdown list.
Click here to find out more about circumventing Observer rules that remove shared ownership.
For enabling Shared Ownership of tickets, you would first have to make sure to map internal groups to the corresponding ticket statuses based on your workflow.
Go to Admin > Ticket fields and click on Status for a list of all your ticket statuses.
Excluding the four default status values 'Open', 'Pending', 'Resolved' and 'Closed', you can map each of the custom statuses created to a set of groups by entering them under Mapped Internal Groups.
To add a custom status, click on Add Item and enter the details for the status there.
Make sure to include Customer Responded as one of your custom statuses. Map all of the internal groups to this status. By doing so, you make sure that even when the customer responds, the ticket still stays in your agent's ticket view. Please note that you also need to make sure that all of your agents, both primary and internal, add Customer Responded as a status in their ticket views for the ticket to be visible to everyone.
When you're done mapping all the statuses with their respective internal groups, click on Done.
Select New > Ticket. Fill out the ticket form.
While selecting a status, please make sure to pick one to which the internal groups are mapped.
The group and agent fields correspond to the primary group and agent of the ticket.
Depending on the status, you can assign an internal group from the list of groups mapped to the status. Assign an internal agent after selecting the internal group.
Under 'Internal Group', select the respective internal group from the drop-down list.
Under 'Internal Agent', choose an agent from the drop-down list.
Click on Update to save the settings.
Click here to know how to circumvent Observer rules that remove shared ownership.
Is the bot free of charge?


The legal culture paradigm offers a new way of thinking about courts that is descriptively accurate and normatively attractive.
For judges, lawyers, and organizations aligned with the legal establishment, this book explains why their longstanding efforts to depoliticize the courts are destined to fail, and offers a more promising approach to reform, that seeks to manage (while acknowledging the inevitability of) judicial politics.
For students of law and social science, this book builds a bridge between traditionalists within the legal profession who are loath to concede the relevance of extralegal influences on judicial decision-making, and social scientists who are comparably reluctant to concede the relevance of law.
Charles Gardner Geyh is the John F. Kimberling Professor of Law at the Indiana University Maurer School of Law. His work on judicial independence, accountability, selection, administration and ethics has appeared in over sixty books, articles, book chapters and reports.


text:
Oliver Norvell Hardy (Spitzname Babe; * 18. Januar 1892 in Harlem, Georgia als Norvell Hardy; † 7. August 1957 in Hollywood, Kalifornien) war ein US-amerikanischer Komiker, Filmschauspieler und Stummfilmregisseur, der vor allem als Teil des legendären Komikerduos Laurel und Hardy weltberühmt wurde. Neben seinem Partner Stan Laurel spielte Hardy hierbei die Figur des wichtigtuerischen Ollie, der Stan nur vermeintlich überlegen ist und oft durch seine Überheblichkeit in missliche Situationen gerät.

In einem Zeitraum von 30 Jahren (1921 bis 1951) drehte das Team zusammen 107 Filme. Vor dem eigentlichen Beginn der künstlerischen Partnerschaft im Jahr 1927 hatte Hardy in etwa 270 Stummfilmen mitgewirkt, von denen nur gut 100 erhalten sind.

Leben

Jugend
Norvell Hardy war erst zehn Monate alt, als sein Vater Oliver starb. Er verbrachte seine Jugend in Milledgeville, Georgia, wo seine Mutter ein Hotel betrieb. Er war ein musikalisch begabter, sangeslustiger Junge und nahm neben der Schule eine Zeit lang unregelmäßig Gesangsunterricht am Konservatorium in Atlanta, bei Adolf Dahm-Petersen.

Berufliche Anfänge
1910 begann er als Geschäftsführer und Filmvorführer des Palace Theater, des ersten Kinos in Milledgeville, zu arbeiten. Dort sah er die frühen Stummfilmkomödien und beschloss, sich in diesem Genre zu versuchen. 1912 verließ er Milledgeville und zog nach Jacksonville (Florida), wo gerade die junge Kinoindustrie aufblühte. Dort fand er jedoch vorerst keine Anstellung in der Filmbranche und musste sich seinen Lebensunterhalt mit Auftritten als Sänger verdienen. Dasselbe tat er, als er 1913 nach Atlanta zog, wo er die erste seiner insgesamt drei Ehefrauen, die Pianistin Madelyn Saloshin, kennenlernte und noch im selben Jahr heiratete.

Schauspielkarriere

Im Jahr 1914 kehrte er mit seiner Frau nach Jacksonville zurück und fand bei der Lubin Company Arbeit als Filmschauspieler. Sein erster Film war Outwitting Dad. Nach gelungenen Auftritten in Kurzfilmen wie dem erhalten gebliebenen, unabhängig produzierten Something in Her Eye (1915) folgte 1916 für die Vim Comedy Company eine Serie von Einaktern um die Charaktere Plump & Runt, in denen er mit Billy Ruge die Hauptrolle spielte. Bei einigen seiner Filme für diese Produktionsfirma konnte er sich auch als Regisseur versuchen.

Nach seinem Weggang von Vim spezialisierte sich Hardy auf die Rolle des "Straight man", Gegenspielers oder Bösewichts, meist mit der damals üblichen starken Gesichtsbehaarung. In dieser Funktion trat er regelmäßig in den Kurzfilmen des Charlie Chaplin-Imitators Billy West (1917/18, Hardy in der Eric Campbell-Rolle) und denen des Komikers Jimmy Aubrey (1919–21) auf, der später in That's My Wife mitwirkte. Zumindest in Großbritannien war Hardy zu dieser Zeit bereits so populär, dass ihm der Verlag Amalgamated Press (später Fleetway) 1920/21 den Comicstrip "The Artful Antics of Babe Hardy" widmete (eine Ehrung, die sowohl Aubrey als auch "Solostar" Laurel verwehrt blieb).

Erstmals 1919 und dann regelmäßig ab 1921 war Hardy unverzichtbarer Bestandteil von Larry Semons damals außerordentlich populären Filmen, die ihn endgültig dem breiten Publikum bekanntmachten. Einen Gauner verkörperte er auch um 1921 in dem Stan-Laurel-Kurzfilm The Lucky Dog, der die beiden künftigen Komikerstars erstmals und rein zufällig gemeinsam zeigte. In Buster Keatons Langfilm-Debüt The Three Ages (Die drei Zeitalter/Ben Akiba hat gelogen!) von 1923 war Hardy trotz eines weitverbreiteten Gerüchts nicht zugegen: der in diesem Film häufig mit ihm verwechselte Kewpie Morgan spielte später im Laurel & Hardy-Film Babes in Toyland (Rache ist süß/ Abenteuer im Spielzeugland) mit. Dennoch war Hardy im Gegensatz zu Laurel auch in langen Stummfilmen zu sehen, u. a. 1925 als Blechmann in Larry Semons Adaption von The Wizard of Oz (Der Zauberer von Oz) und 1927 im Western No Man's Law.

Duo mit Laurel

Ab 1925 waren sowohl Hardy als auch Laurel für Hal Roach tätig und standen für den Filmproduzenten mal solo, mal zufällig gemeinsam vor der Kamera. Nachdem Roach von seinem Autor bzw. Regisseur Leo McCarey darauf aufmerksam gemacht worden war, wie gut die beiden harmonierten, nutzte er das Potenzial, indem er Laurel und Hardy ab 1927 systematisch als Team aufbaute. Hardy spielte innerhalb der Partnerschaft meist den angeberischen, sich selbst maßlos überschätzenden Mann von Welt, der an seinen Ansprüchen scheitert; im Verhältnis zum von Laurel verkörperten Charakter war er die vermeintlich überlegene, pompös-respektheischende Vaterfigur, die aber letztlich ähnlich infantile Züge an den Tag legte. Zu Hardys Markenzeichen wurden u. a. sein leidendes, in Großaufnahme an den Zuschauer gewandtes Gesicht, wenn sein Partner wieder einmal einen Fauxpas begangen hatte, das verlegene Wedeln mit seiner Krawatte sowie der Spruch "Well, here's another nice mess you've gotten me into" ("Da hast du mir ja mal wieder eine schöne Suppe eingebrockt").

Während Laurel am Drehbuch oder Schnitt eines Filmes arbeitete, konzentrierte sich "Babe", wie Hardy mit Spitznamen genannt wurde, ausschließlich auf den schauspielerischen Part. Er frönte lieber seinem Hobby, dem Golfspielen, was ihm ein niedriges Handicap einbrachte und den Ruf, einer der besten Spieler seiner Zeit gewesen zu sein. Hardy war zudem Freimaurer und Mitglied der Solomon Lodge No. 20 in Jacksonville. Einer der bekanntesten Filme, die auf die Freimaurerei anspielen, ist der Film Die Wüstensöhne (Sons of the Desert) von 1933. Dort begeben sich Stan Laurel und Oliver Hardy auf einen Konvent der Shriners in Chicago, tragen deren Fes und treffen sich in einer Oase (Freimaurerloge).

Während seiner Partnerschaft mit Laurel trat Hardy nur selten ohne diesen auf. 1935 hätte er nach Wunsch des Produzenten David O. Selznick beinahe die Rolle des Micawber in der MGM-Verfilmung von Charles Dickens' Roman David Copperfield bekommen, wäre der Regisseur, George Cukor nicht dagegen gewesen. Als es 1939 zwischen Laurel und Roach kriselte, gab Letzterer Hardy kurzerhand die Hauptrolle in der Komödie Zenobia (Zenobia, der Jahrmarktselefant), in der auch Ex-Komikerstar Harry Langdon mitwirkte. Es wird oft behauptet, dass Roach die beiden Komiker als neues Duo aufbauen wollte. Dagegen spricht allerdings, dass beide im Film nicht als Team agierten, sondern zumeist jeweils ihre eigenen Szenen hatten.

Späte Karriere und Tod
Nach dem vorläufigen Ende der gemeinsamen Filmkarriere Laurel und Hardys im Jahr 1945 trat Hardy 1949 noch in dem Western The Fighting Kentuckian (In letzter Sekunde) als komischer Sidekick von John Wayne auf und hatte 1950 einen Kurzauftritt als Rennbahnbesucher neben Bing Crosby im Frank-Capra-Film Riding High (Lach und wein mit mir). 1951 stand er für Atoll K (Dick und Doof erben eine Insel) schließlich doch noch ein letztes Mal mit Laurel vor der Kamera.

Mitte der 1950er-Jahre nahm Oliver Hardy stark ab, um seine Gesundheit zu schonen. Allerdings erlitt er 1956 einen Schlaganfall und war daraufhin fast völlig gelähmt. Nach zwei weiteren Schlaganfällen starb er am 7. August 1957 im Alter von 65 Jahren. Er wurde im Valhalla Memorial Park, Nord-Hollywood in der Freimaurer-Sektion beigesetzt.

Der Asteroid (2866) Hardy trägt seinen Namen.

Als Andenken an seinen früh verstorbenen Vater stellte er dessen Vornamen stets vor seinen.

Solo-Filmografie
Vor allem in den frühen Schaffensjahren bis 1927 war Oliver Hardy an sehr vielen Kurzfilmen beteiligt, das erklärt die hohe Anzahl an Filmtiteln.

Die wichtigsten deutschen Synchronsprecher für Hardy waren Arno Paulsen in den 1950er- und 1960er- sowie Michael Habeck in den 1970er-Jahren.

1914 – 1915 –
1916 – 1917 –
1918 – 1919 –
1920 – 1921 –
1922 – 1923 –
1924 – 1925 –
1926 – 1927 –
Spätere Filme – Nicht bestätigte Auftritte

Filme ohne Stan Laurel (bis 1928)

Spätere Filme
 Zenobia (Roach-Langfilm mit Harry Langdon) (1939)
 The Fighting Kentuckian (Republic Pictures, in der Hauptrolle John Wayne) (1949)
 Lach und wein mit mir (Paramount, Regie: Frank Capra, nur Cameo) (1950)

Nicht bestätigte Auftritte
 The Artist's Model (1916)
 Terrible Kate (1917)
 His Movie Mustache (1917)
 Bad Kate (1917)
 This Is Not My Room (1917)
 Pipe Dreams and Prizes (1920)
 The Perfect Lady (1924)
 Roaring Lions at Home (1924)
 Laughing Ladies (1925)

Literatur
 Rainer Dick: Laurel & Hardy und die Frauen. Vorwort: Ottfried Fischer, Fachverlag für Filmliteratur Landshut 2015, ISBN 978-3-943127-05-8
 Sven Hanuschek: Laurel & Hardy. Eine Revision. Paul Zsolnay Verlag, Wien 2010, ISBN 978-3-552-05506-3.

Weblinks

 Deutsches Laurel-und-Hardy-Museum
 Offizielle Website (englisch)
 The Artful Antics of Babe Hardy

Einzelnachweise

 Oliver
Komiker
Freimaurer (20. Jahrhundert)
Freimaurer (Vereinigte Staaten)
Stummfilmschauspieler
Darstellender Künstler (Vereinigte Staaten)
Person als Namensgeber für einen Asteroiden
US-Amerikaner
Geboren 1892
Gestorben 1957
Mann


text:
Kelly Reichardt's poetic 'First Cow' deserves to find an audience on video on demand
by Justin Barney
We're 88Nine's Justin Barney and Milwaukee Film's Kpolly. We're buds, we like cinema — we're Cinebuds.
"First Cow" is a new film from director Kelly Reichardt. It is from production house A24, which has made "Uncut Gems," "Hereditary" and other truly beautiful and thoughtful films. It was in theaters for a blip. Its doomed theatrical release was on March 6, 2020, but it has now come to the internet where we rented it on Amazon for six dollars and you should do the same because we LOVED this movie.
"First Cow" | A24
I had heard some mixed reviews. When people talk about Kelly Reichardt they use words like "meditative" and "patient." I heard one critic say that the movie suffered from watching it at his house with his cell phone by his side. However, we did not have these problems. When it was over Kpolly and I thought about running it back and just starting it again. Sure, it is "quiet" and "thoughtful," but it really is so much more. I don't want to say too much here so you should listen to the conversation ESPECIALLY if you have already seen it. Or, watch it, and then listen to the conversation. It's worth the six bucks. And since "First Cow" implies the existence of a second cow, we can't wait for the sequel.
Like what you hear? Subscribe!
Get all of 88Nine's podcasts delivered right to you weekly at RadioMilwaukee.org/Podcasts. We've got podcasts about music, food and film, with fresh episodes dropping every week! And don't forget to check out our new podcast "By Every Measure," a six-part exploration of systemic racism in Milwaukee.
Support from our community makes stories like the one you just read possible. Make a gift to support the team behind the programming you use and enjoy!

redpajama_set_name: RedPajamaCommonCrawl


The boys spent a few hours at their grandma's house this afternoon, so I busied myself by burning an intricate octopus stencil. I gave it a ton of little details, and was really pleased that the whole thing held together.
It didn't work so well on the Gelli plate. The details were too small and the stencil film too thick to transfer the paint to the paper. I'd try again with thinner film, but it likely wouldn't hold up to all the octopus's thin contour lines. Maybe I should stick with carving stamps.
My four-year-old bested me, when he returned home, by creating a drawing out of Play-Doh. He used the pasta press to make himself some black lines, then arranged them on a tray.


To Be Built Russell II **Photos shown are not of actual home. For Representation Only**FABULOUS CURRENT PROMOTION! COME TODAY AND CUSTOMIZE YOUR NEW DREAM HOME! MASTERFUL RANCH PLAN W/ LARGE ZONED BEDROOMS FOR PRIVACY! LARGE COVERED PORCH INCLUDED IN THE FOOTPRINT OF THE HOUSE! FEELS UBER SPACIOUS DUE TO STANDARD VAULTED CEILING IN GREAT ROOM! EXTREMELY OPEN PLAN!


Graphics Files Included: Photoshop PSD; High Resolution: No; Layered: Yes; Minimum Adobe CS Version: CS; Pixel Dimensions: 590x1389.
FILE HAS BEEN UPDATED : Completely rebuilt using Photoshop! Now includes a fully editable PSD file!
Stop using those ugly stock form elements defined by the OS! This is a set of custom form elements.
These are still in a graphical form, however there are numerous tutorials on the web that demonstrate how to use custom form elements. Plus by using jQuery, you can make custom built drop down menus, and date fields using these graphics.
The light large grey color scheme is all that is included.
The file was originally built using Adobe Photoshop. So the file included is a PSD file.
The fonts used in the file are.
Textured Shadows; dePressed - Embossed Photoshop Styles; Pressed - Letterpress Photoshop Styles; Pricing Tables - 5 Pack; Light Arrow Buttons; Web Photo Frames - Set Two; Web Business Collateral - Contract, Proposal.
Keywords: check box, clean, contact form, date field, drop down, form, gray, input field, menu, radio button, text field, ui, user interface, web form.
Best stock graphics, design templates, vectors, PhotoShop templates, textures & 3D models from creative professional designers. Create GraphicRiver Web Form UI Kit Large Grey 37349 style with PhotoShop, Illustrator, InDesign, 3DS Max, Maya or Cinema 4D. Full details of GraphicRiver Web Form UI Kit Large Grey 37349 for digital design and education. GraphicRiver Web Form UI Kit Large Grey 37349 desigen style information or anything related.


text:
Q: Looking for a query to to return the data value when the data changes otherwise return space ' ' Database server type = SQL Server 2012 SP2
Here are the source tables.
  CREATE TABLE a
  (
     e_id INT,
     r_id INT,
     d_id INT,
     s_id INT
  );

CREATE TABLE r
  (
     id   INT,
     NAME VARCHAR(50)
  );

CREATE TABLE d
  (
     id       INT,
     calldate DATE
  );

CREATE TABLE e
  (
     id      INT,
     NAME    VARCHAR(50),
     initial VARCHAR(5)
  );

CREATE TABLE s
  (
     id        INT,
     specialty VARCHAR(50)
  );

INSERT INTO a
VALUES      (8,
             13,
             9,
             13),
            (8,
             13,
             10,
             13),
            (8,
             13,
             11,
             13),
            (8,
             13,
             12,
             13),
            (8,
             13,
             13,
             13),
            (8,
             13,
             14,
             13),
            (10,
             13,
             15,
             13),
            (10,
             13,
             16,
             13),
            (10,
             13,
             17,
             13),
            (16,
             13,
             18,
             13),
            (16,
             13,
             19,
             13),
            (16,
             13,
             20,
             13),
            (9,
             13,
             21,
             13),
            (9,
             13,
             22,
             13),
            (9,
             13,
             23,
             13),
            (9,
             13,
             24,
             13),
            (16,
             13,
             25,
             13),
            (16,
             13,
             26,
             13);
INSERT INTO a
VALUES
           (10,22,9,13),
           (10,22,10,13),
           (10,22,11,13),
           (10,22,12,13),
           (10,22,13,13),
           (16,22,14,13),
           (16,22,15,13),
           (16,22,16,13),
           (16,22,17,13),
           (9,22,18,13),
           (9,22,19,13),
           (9,22,20,13),
           (18,22,21,13),
           (18,22,22,13),
           (10,22,23,13),
           (10,22,24,13),
           (9,22,25,13),
           (9,22,26,13);

INSERT INTO r
VALUES      (13,
             'Primary'),
            (22,
             'Secondary'),
            (33,
             'Prim Trd'),
            (44,
             'Sec Td');

INSERT INTO e
VALUES      (8,
             'Jack',
             'JM'),
            (9,
             'Ace',
             'AQ'),
            (10,
             'Mike',
             'MM'),
            (16,
             'George',
             'GH'),
            (18 ,'Bill',  'BK'  );

INSERT INTO s
VALUES      (13,
             'Pediatric'),
            (28,
             'EMT'),
            (55,
             'ER');

INSERT INTO d
VALUES      (9   , '2015-01-09'),
            (10  , '2015-01-10'),
            (11  , '2015-01-11'),
            (12  , '2015-01-12'),
            (13  , '2015-01-13'),
            (14  , '2015-01-14'),
            (15  , '2015-01-15'),
            (16  , '2015-01-16'),
            (17  , '2015-01-17'),
            (18  , '2015-01-18'),
            (19  , '2015-01-19'),
            (20  , '2015-01-20'),
            (21  , '2015-01-21'),
            (22  , '2015-01-22'),
            (23  , '2015-01-23'),
            (24  , '2015-01-24'),
            (25  , '2015-01-25'),
            (26  , '2015-01-26'),
            (27  , '2015-01-27'),
            (28  , '2015-01-28'),
            (29  , '2015-01-29'),
            (30  , '2015-01-30')

Table A is a linking table that linKs Tables D, E, R, and S.
Table A
║ e_id │ r_id │ d_id │ s_id ║
╠══════╪══════╪══════╪══════╣
║ 8    │ 13   │ 9    │ 13   ║
║ 8    │ 13   │ 10   │ 13   ║
║ 8    │ 13   │ 11   │ 13   ║
║ 8    │ 13   │ 12   │ 13   ║
║ 8    │ 13   │ 13   │ 13   ║
║ 8    │ 13   │ 14   │ 13   ║
║ 10   │ 13   │ 15   │ 13   ║
║ 10   │ 13   │ 16   │ 13   ║
║ 10   │ 13   │ 17   │ 13   ║
║ 16   │ 13   │ 18   │ 13   ║
║ 16   │ 13   │ 19   │ 13   ║
║ 16   │ 13   │ 20   │ 13   ║
║ 9    │ 13   │ 21   │ 13   ║
║ 9    │ 13   │ 22   │ 13   ║
║ 9    │ 13   │ 23   │ 13   ║
║ 9    │ 13   │ 24   │ 13   ║
║ 16   │ 13   │ 25   │ 13   ║
║ 16   │ 13   │ 26   │ 13   ║
║ 10   │ 22   │ 9    │ 13   ║
║ 10   │ 22   │ 10   │ 13   ║
║ 10   │ 22   │ 11   │ 13   ║
║ 10   │ 22   │ 12   │ 13   ║
║ 10   │ 22   │ 13   │ 13   ║
║ 16   │ 22   │ 14   │ 13   ║
║ 16   │ 22   │ 15   │ 13   ║
║ 16   │ 22   │ 16   │ 13   ║
║ 16   │ 22   │ 17   │ 13   ║
║ 9    │ 22   │ 18   │ 13   ║
║ 9    │ 22   │ 19   │ 13   ║
║ 9    │ 22   │ 20   │ 13   ║
║ 18   │ 22   │ 21   │ 13   ║
║ 18   │ 22   │ 22   │ 13   ║
║ 10   │ 22   │ 23   │ 13   ║
║ 10   │ 22   │ 24   │ 13   ║
║ 9    │ 22   │ 25   │ 13   ║
║ 9    │ 22   │ 26   │ 13   ║

Table D
║ id │ calldate   ║
╠════╪════════════╣
║ 9  │ 2015-01-09 ║
║ 10 │ 2015-01-10 ║
║ 11 │ 2015-01-11 ║
║ 12 │ 2015-01-12 ║
║ 13 │ 2015-01-13 ║
║ 14 │ 2015-01-14 ║
║ 15 │ 2015-01-15 ║
║ 16 │ 2015-01-16 ║
║ 17 │ 2015-01-17 ║
║ 18 │ 2015-01-18 ║
║ 19 │ 2015-01-19 ║
║ 20 │ 2015-01-20 ║
║ 21 │ 2015-01-21 ║
║ 22 │ 2015-01-22 ║
║ 23 │ 2015-01-23 ║
║ 24 │ 2015-01-24 ║
║ 25 │ 2015-01-25 ║
║ 26 │ 2015-01-26 ║
║ 27 │ 2015-01-27 ║
║ 28 │ 2015-01-28 ║
║ 29 │ 2015-01-29 ║
║ 30 │ 2015-01-30 ║

Table E
╔════╤════════╤═════════╗
║ id │ name   │ initial ║
╠════╪════════╪═════════╣
║ 8  │ Jack   │ JM      ║
║ 9  │ Ace    │ AQ      ║
║ 10 │ Mike   │ MM      ║
║ 16 │ George │ GH      ║
║ 18 │ Bill   │ BK      ║
╚════╧════════╧═════════╝

Table R
╔════╤═══════════╗
║ id │ name      ║
╠════╪═══════════╣
║ 13 │ Primary   ║
║ 22 │ Secondary ║
║ 33 │ Prim Trd  ║
║ 44 │ Sec Td    ║
╚════╧═══════════╝

Table S
|ID | Specialty |
|---+-----------|
|13 | Pediatric |
|28 | EMT       |
|55 | ER        |

Here is the query I was thinking would work, but generates errors:
SELECT d.calldate,
       Max(CASE
             WHEN s.id = 13
                  AND r.NAME = 'Primary' THEN ( e.NAME )
           END) AS [Primary],
       Max(CASE
             WHEN s.id = 13
                  AND r.NAME = 'Secondary' THEN ( e.NAME )
           END) AS [Secondary],
       Max(CASE
             WHEN s.id = 13
                  AND r.NAME = 'Primary'
                  AND ( ( e.id = (SELECT e1.id
                                  FROM   a a1
                                         INNER JOIN e e1
                                                 ON e1.id = a1.e_id
                                         INNER JOIN d d1
                                                 ON d1.id = a1.d_id
                                         INNER JOIN s s1
                                                 ON s1.id = a1.s_id
                                         INNER JOIN r r1
                                                 ON r1.id = a1.r_id
                                  WHERE  d1.calldate = CONVERT(DATE,
                                                       Dateadd(dd, -1,
                                                       d.calldate),
                                                       101)
                                         AND r1.NAME = 'Primary'
                                         AND s1.id = 13) )
                        AND ( e.id = (SELECT e1.id
                                      FROM   a a1
                                             INNER JOIN e e1
                                                     ON e1.id = a1.e_id
                                             INNER JOIN d d1
                                                     ON d1.id = a1.d_id
                                             INNER JOIN s s1
                                                     ON s1.id = a1.s_id
                                             INNER JOIN r r1
                                                     ON r1.id = a1.r_id
                                      WHERE  d1.calldate = CONVERT(DATE, Dateadd
                                                           (dd, 1,
d.calldate),
101
)
AND r1.NAME = 'Primary'
AND s1.id = 13) ) ) THEN ' '
ELSE e.initial
END) AS [PrimaryINIT],
Max(CASE
WHEN s.id = 13
AND r.NAME = 'Secondary'
AND ( e.id = (SELECT e1.id
FROM   a a1
INNER JOIN e e1
ON e1.id = a1.e_id
INNER JOIN d d1
ON d1.id = a1.d_id
INNER JOIN s s1
ON s1.id = a1.s_id
INNER JOIN r r1
ON r1.id = a1.r_id
WHERE  d1.calldate = CONVERT(DATE, Dateadd(dd, -1,
d.calldate),
101)
AND r1.NAME = 'Secondary'
AND s1.id = 13)
AND ( e.id = (SELECT e1.id
FROM   a a1
INNER JOIN e e1
ON e1.id = a1.e_id
INNER JOIN d d1
ON d1.id = a1.d_id
INNER JOIN s s1
ON s1.id = a1.s_id
INNER JOIN r r1
ON r1.id = a1.r_id
WHERE  d1.calldate = CONVERT(DATE, Dateadd(dd, 1,
d.calldate),
101
)
AND r1.NAME = 'Secondary'
AND s1.id = 13) ) ) THEN ' '
ELSE e.initial
END) AS [SecondaryINIT]
FROM   a
       INNER JOIN e
               ON e.id = a.e_id
       INNER JOIN d
               ON d.id = a.d_id
       INNER JOIN s
               ON s.id = a.s_id
       INNER JOIN r
               ON r.id = a.r_id
WHERE  Datepart(mm, d.calldate) = 1
       AND Datepart(year, d.calldate) = 2015
GROUP  BY d.calldate

Here are the results that we are looking for from the query.
(Note that the Initial column is returning the column value only before and after a data changes):
Desired Results from query.
╔════════════╤═════════╤═══════════╤═════════╤═══════════╗
║ callDate   │ Primary │ Secondary │ PrimINIT│ SeconINIT ║
╠════════════╪═════════╪═══════════╪═════════╪═══════════╣
║ 2015-01-09 │ Jack    │ Mike      │ JM      │ MM        ║
║ 2015-01-10 │ Jack    │ Mike      │         │           ║
║ 2015-01-11 │ Jack    │ Mike      │         │           ║
║ 2015-01-12 │ Jack    │ Mike      │         │           ║
║ 2015-01-13 │ Jack    │ Mike      │         │ MM        ║
║ 2015-01-14 │ Jack    │ George    │ JM      │ GH        ║
║ 2015-01-15 │ Mike    │ George    │ MM      │           ║
║ 2015-01-16 │ Mike    │ George    │         │           ║
║ 2015-01-17 │ Mike    │ George    │ MM      │ GH        ║
║ 2015-01-18 │ George  │ Ace       │ GH      │ AQ        ║
║ 2015-01-19 │ George  │ Ace       │         │           ║
║ 2015-01-20 │ George  │ Ace       │ GH      │ AQ        ║
║ 2015-01-21 │ Ace     │ Bill      │ AQ      │ BK        ║
║ 2015-01-22 │ Ace     │ Bill      │         │ BK        ║
║ 2015-01-23 │ Ace     │ Mike      │         │ MM        ║
║ 2015-01-24 │ Ace     │ Mike      │ AQ      │ MM        ║
║ 2015-01-25 │ George  │ Ace       │ GH      │ AQ        ║
║ 2015-01-26 │ George  │ Ace       │ GH      │ AQ        ║
╚════════════╧═════════╧═══════════╧═════════╧═══════════╝

A: Try it like this:
WITH Pivoted AS
(
    SELECT d.calldate AS calldate
          ,MAX(CASE WHEN r.Name='Primary' THEN e.NAME END) AS [Primary]
          ,MAX(CASE WHEN r.Name='Secondary' THEN e.NAME END) AS [Secondary]
          ,MAX(CASE WHEN r.Name='Primary' THEN e.initial END) AS [PrimINIT]
          ,MAX(CASE WHEN r.Name='Secondary' THEN e.initial END) AS [SeconINIT]
    FROM a
    INNER JOIN e ON a.e_id=e.id
    INNER JOIN r ON a.r_id=r.id
    INNER JOIN d ON a.d_id=d.id
    INNER JOIN s ON a.s_id=s.id
    GROUP BY d.calldate
)
,WithNeighbours AS
(
    SELECT *
          ,ISNULL(LAG([Primary]) OVER(ORDER BY calldate,[Primary]),'') AS PrevPrim
          ,ISNULL(LAG([Secondary]) OVER(ORDER BY calldate,[Secondary]),'') AS PrevSecon
          ,ISNULL(LEAD([Primary]) OVER(ORDER BY calldate,[Primary]),'') AS NxtPrim
          ,ISNULL(LEAD([Secondary]) OVER(ORDER BY calldate,[Secondary]),'') AS NxtSecon
    FROM Pivoted
)
SELECT calldate
      ,[Primary]
      ,[Secondary]
      ,CASE WHEN [Primary]<>PrevPrim OR [Primary]<>NxtPrim THEN PrimINIT ELSE '' END AS PrimINIT
      ,CASE WHEN [Secondary]<>PrevSecon OR [Secondary]<>NxtSecon THEN SeconINIT ELSE '' END AS SeconINIT
FROM WithNeighbours
ORDER BY calldate

The result with the data given
+------------+---------+-----------+----------+-----------+
| calldate   | Primary | Secondary | PrimINIT | SeconINIT |
+------------+---------+-----------+----------+-----------+
| 2015-01-09 | Jack    | Mike      | JM       | MM        |
+------------+---------+-----------+----------+-----------+
| 2015-01-10 | Jack    | Mike      |          |           |
+------------+---------+-----------+----------+-----------+
| 2015-01-11 | Jack    | Mike      |          |           |
+------------+---------+-----------+----------+-----------+
| 2015-01-12 | Jack    | Mike      |          |           |
+------------+---------+-----------+----------+-----------+
| 2015-01-13 | Jack    | Mike      |          | MM        |
+------------+---------+-----------+----------+-----------+
| 2015-01-14 | Jack    | George    | JM       | GH        |
+------------+---------+-----------+----------+-----------+
| 2015-01-15 | Mike    | George    | MM       |           |
+------------+---------+-----------+----------+-----------+
| 2015-01-16 | Mike    | George    |          |           |
+------------+---------+-----------+----------+-----------+
| 2015-01-17 | Mike    | George    | MM       | GH        |
+------------+---------+-----------+----------+-----------+
| 2015-01-18 | George  | Ace       | GH       | AQ        |
+------------+---------+-----------+----------+-----------+
| 2015-01-19 | George  | Ace       |          |           |
+------------+---------+-----------+----------+-----------+
| 2015-01-20 | George  | Ace       | GH       | AQ        |
+------------+---------+-----------+----------+-----------+
| 2015-01-21 | Ace     | Bill      | AQ       | BK        |
+------------+---------+-----------+----------+-----------+
| 2015-01-22 | Ace     | Bill      |          | BK        |
+------------+---------+-----------+----------+-----------+
| 2015-01-23 | Ace     | Mike      |          | MM        |
+------------+---------+-----------+----------+-----------+
| 2015-01-24 | Ace     | Mike      | AQ       | MM        |
+------------+---------+-----------+----------+-----------+
| 2015-01-25 | George  | Ace       | GH       | AQ        |
+------------+---------+-----------+----------+-----------+
| 2015-01-26 | George  | Ace       | GH       | AQ        |
+------------+---------+-----------+----------+-----------+

redpajama_set_name: RedPajamaStackExchange


A Raleigh native, David is our newest partner at the Holly Springs, we knew right away he would be a natural fit for Back in Action. His colleagues say he is one of the hardest working guys around. He earned his masters in physical therapy from UNC-CH in 2008 and is a diehard Tarheel fan. A family man, he is married with two awesome kids. He is an avid runner, scuba diver, and all around athlete.
David has a particular interest in post-operative care and is a very experienced dry needler. He enjoys working with athletes of all ages. His brand of treatment is built around a hands on approach as well as assessing patient movements with the SFMA. His emphasis on manual therapy and improving functional movement patterns will identify your weak links and get you back to enjoying your life again …or performing in sport better than ever.


Eric Stonestreet, outstanding supporting actor in a comedy series for his role on Modern Family insisted there was no hard feelings between co-stars (and co-nominees Jesse Tyler Ferguson and Ty Burrell.
I've seen just about every episode of CBS's The Good Wife and it seemed pretty clear that Archie Panjabi's character of Kalinda Sharma is a lesbian.
Backstage, the actress, winner of the Emmy for outstanding actress in a drama series, indicated that things may not be so black and white.


Dacheng Ren, the Milton and Ann Stevenson Endowed Professor of Biomedical and Chemical Engineering in the College of Engineering and Computer Science (ECS), has been named director of the Syracuse Biomaterials Institute (SBI). He has been serving as the SBI's interim director since 2016 and oversees all day-to-day operations of the institute, an interdisciplinary collaboration of faculty from the College of Arts and Sciences (CAS) and ECS.
"I truly enjoyed working with our excellent colleagues and talented students over the past years. I am excited to take this new opportunity to further promote collaborative research and student training related to biomaterials, both on SU campus and with neighboring institutions of SUNY-Upstate and SUNY-ESF. Together, we can accomplish great things," said Ren.
Ren has been a member of the biomedical and chemical engineering faculty since 2006. He also serves as director of the chemical engineering graduate program and holds courtesy appointments in the Department of Civil and Environmental Engineering in ECS and the Department of Biology in CAS. He has been a member of the SBI faculty collaboration since its inception, with his research activity focusing on antifouling materials, microbe-surface interactions, cell signaling, device-associated infections, sensors for pathogen detection, and novel biofilm inhibitors and surface modification for biofilm control. Ren is a past recipient of an NSF CAREER award and a 2014 recipient of a Faculty Excellence Award from the College of Engineering and Computer Science. He is an awardee of 2018 Chancellor's citation for Faculty Excellence and Scholarly Distinction.
Established at Syracuse in 2007 with a central facility in Bowne Hall, the SBI comprises a highly collaborative roster of faculty spanning eight academic units on the SU campus as well as researchers from SUNY-ESF and SUNY-Upstate Medical University. More than 30 faculty members and 150 students, are affiliated with the SBI, pursuing both fundamental and applied research, from the properties of individual cells, to their organization into tissues and organs, to the development of smart biomaterials and medical devices. Areas of focus range from applied biomaterials research; aiming at designing natural and synthetic substances to treat, augment or replace tissues and organs of the human body; to fundamental research into the interactions between biological matter and non-living materials. Research at SBI has been supported by federal agencies (NSF, NIH, DOD), private foundations and industrial partners. SBI members have won over $38 million in research funding and submitted 75 invention disclosures in the past 9 years.


Bullet proof glass stops bullets from entering the car. Bullet proof glass and windshield is made by installing polycarbonate thermoplastic between layers of glass. A bullet can go through the exterior auto glass layer, but it won't be able to penetrate the polycarbonate. Polycarbonate auto glass is created by using layers of laminated glass. There's also another type of glass called bullet resistant glass. Those are laminated glass layers held together by very powerful liquid glue. If your windshield is cracked and you need windshield repair work and if you are located in the Oakville Gzone Auto Glass is a great auto glass replacement and repair shop, with a lot of experience and great prices. To read more click Windshield replacement Oakville or Windshield replacement Hamilton. Even though they do not do bulletproof windshield or auto glass replacement they definitely do a good job with regular, high quality auto glass and windshields.
There is another type of bullet proof glass on the market, which is the most effective and is used in the armored cars. The nice thing about the glass is that outside bullets can't penetrate through the glass, but guards from the inside can shoot bullets out. This glass is called one-way bullet proof glass. This type of glass is made up of two layers. A brittle layer is on the outside, while a flexible layer is on the inside. When a bullet is shot from the outside, it will shatter a part of the brittle glass. The brittle glass will absorb some of the impact, slowing the bullet by spreading it on a large area. When the bullet hits the flexible glass, it will be stopped. However, when a bullet is fired from the inside, it first hits the flexible glass. It will go through because the energy is focused on a small area. The bullet will then go through the brittle glass because the flexible glass did not stop the bullet's speed.


text:
Aphrodita tosaensis är en ringmaskart som beskrevs av Imajima 200. Aphrodita tosaensis ingår i släktet Aphrodita och familjen Aphroditidae. Inga underarter finns listade i Catalogue of Life.

Källor

Havsborstmaskar
tosaensis


text:
Preschool Sleep Ed Program Shown to be Effective
admin . Jul 11, 2014
Researchers at the University of Michigan have found that an innovative sleep education program targeting preschoolers extended the children's nightly sleep by thirty minutes. The study, which was recently published in the journal Sleep, was instituted through the Head Start program, and included a single 45-minute educational program aimed at parents and supplemented by two weeks of in-class programming aimed at children. The study, which involved exposing the kids to a program titled Sweet Dreamzzz, involved 152 children. The program's success was measured through diaries that the parents were asked to keep, tracking their children's sleep. Sweet Dreamzzz is a non-profit organization dedicated to making a difference in the health and well being of children by providing economically disadvantaged students with education about sleep. The program operates on the belief that getting the right amount of sleep each night helps children learn better, feel better and play better. It is based on sleep science that has shown that sleep leads to a higher risk of obesity and other health conditions, and robs children of cognitive acuity. The program specifically targets kids preschool age on up through the 5th grade, and is provided through volunteers who come into their schools and educate through interactive games and activities. Each child is given a special sleep kit, which includes a nightshirt, sleeping bag, toothbrush and toothpaste, a teady bear and reading book, and more. The program is free of charge, and also educates parents and teachers. Katherine De Rue was a postgraduate fellow at the University of Michigan Sleep Disorders Center and Departments of Neurology and Pediatrics when she originally conducted the study. Ms. De Rue is now a pediatrician and sleep physician at IHA Pulmonary, Critical Care and Sleep Consultants in Ann Arbor. She said, "We know that an increase in sleep duration of that magnitude is associated with better function for kids during the day. Parents often underestimate how much sleep their kids require, so an educational program like this, directed at parents when they have more control over their kids' sleep schedules, can have great impact." One of the things that the study's authors noted was that despite the successful impact of the educational program, when parents were retested on what they had learned thirty days later, their knowledge had dissipated. Said Ronald D. Chervin, M.D., M.S., the study's senior author and director of the U-M Sleep Disorders Center, "So we found that a two-week program of daily exposure to sleep education in the preschool classroom, along with an initial presentation for parents, can be an effective strategy. But repeated exposure or reminders about the sleep information may be necessary to maintain the effects for kids and especially parents over time."
Concerns Raised Over Teen "Junk Sleep" June 11, 2015
How Sleep Can Improve Your Kids' Grades January 27, 2015
ADHD and Sleep Disorders September 12, 2014
Miami Schools Consider Changing Teen School Schedules August 22, 2014


Former England and Newcastle football manager Kevin Keegan is to speak on the opening day of Humber Business Week 2019, it has today been confirmed.
Keegan, who now combines football punditry for television with coaching and motivational speaking, will form part of the new "Destination Monday" offering at the KCOM Stadium on June 3, as keynote speaker at the Institute of Directors (IoD) Humber Luncheon.
The news comes as organisers for the week have also confirmed that a curtain raiser "launch night" will again be held at The University of Hull in May to preview the week, such was the overwhelming success of last year's inaugural event.
That will offer the chance to view the full programme for 2019, and hear from Lee Pitcher, Head of Resilience at Yorkshire Water, as he will give a presentation entitled "Living with Water – A Collaborative Approach to Resilience in Hull".
Amongst speakers on that night will be Paul Sewell, one of the original founders of Humber Business Week 16 years ago, and Kath Lavery, who chairs the week and heads a steering group of local business people who bring the event together each year.
Many annual staple events will again form part of Humber Business Week in 2019, including the Bondholders Breakfast on day one and The Business Day which has again been scheduled in for the final day, Friday, June 7 at Bridlington Spa, for which broadcaster, actor and former MP Gyles Brandreth will be host.
Mrs Lavery says the launch night, on Wednesday, May 8, will provide an ideal opportunity to learn about the opportunities provided by 2019's programme, but says the onus is now on businesses to "create they week they want".
She said: "It is fantastic to already be in a position where we have a great initial Monday shaping up at the KCOM Stadium and The Business Day again confirmed for the Friday in Bridlington, but now is the key time for businesses across the region to shape the week as they want it.
"We know there is a feeling that some events and topics which are similar in nature and target audience could be clustered together, so now is the time for businesses working in the same sectors to collaborate and get together to consider how they can make the weeks work best for them.
"We have purposely left a blank canvas there to make the programme adaptable, so if there are businesses wanting to partner together that would be a great addition this year and something we'll look to accommodate.
"If that sees a number of events held on the same morning at the same venue, or within close proximity to one another and at times for people to travel between, then great.
Mrs Lavery says she is delighted to be repeating the launch night, ahead of the week itself from Monday June 3 to Friday June 7, and to have secured Mr Pitcher, having recently returned from Tokyo having been a guest speaker at the World Water Congress.
Pat Coyle, chairman of the IoD in East Yorkshire, expects the appearance of Kevin Keegan to be hugely popular with a business audience.
Playing for Scunthorpe, Liverpool, Hamburg, Southampton and Newcastle, he is regarded as one of the greatest players in English football history, famed for his style on the pitch, his relentless ambition and passion for the game.
He captained England for six years until his international retirement after the 1982 World Cup and in management his spell in charge at Newcastle has become legendary, leading the club from the depths of the old Second Division to the brink of the Premier League title with a flamboyant style that saw his team dubbed "The Entertainers". He was awarded an OBE in 1982.
The Humber Luncheon starts at noon on Monday, June 3. Tickets are £47 + VAT for IoD members and £54 + VAT for non-members. Tables of 10 are £450 + VAT.


text:
Concern at big rise in skin cancer cases
3rd July 2016 Health 33824
THE "sun, sea and sangria" generation of older people is being diagnosed with potentially deadly skin cancer at an alarming rate, a charity has warned.
More than 10,000 people aged 55 and over have – for the first time – been diagnosed with the most serious form of skin cancer in a single year, figures from Cancer Research UK show.
Yorkshire and The Humber has contributed to this landmark figure with around 640 people aged 55 and over diagnosed with malignant melanoma every year, while the total number diagnosed across all age groups in the region is 1,000.
Nationally, some 10,583 people aged 55 and over were told they had malignant melanoma in 2014, the most recent figure available, up from about 3,100 cases 20 years ago.
The charity said people living longer is contributing to the rise but also blamed cheap package holidays.
It said the "sun, sea and sangria" generation – who took inexpensive package holidays from the 1960s onwards and wanted a tan at all costs – were now being diagnosed due to sun exposure and sunburn.
Rates of melanoma in people aged 55 and over have more than doubled in the last 20 years, the data showed.
Nicki Embleton, Cancer Research UK spokesperson for Yorkshire, said: "One of the reasons for the rise in melanoma rates is likely related to the 'sun, sea and sangria' generation who benefitted from cheap package holidays from the 1960s onwards.
"Getting sunburnt doesn't mean that you'll definitely develop melanoma but it does increase your chances of developing the disease. It's worrying to see that malignant melanoma rates are continuing to rise and it's very important that people take care of their skin in strong sun, even if they've been sunburnt in the past.
"We all need some sun for vitamin D, but enjoying the sun safely and avoiding sunburn can reduce your risk of malignant melanoma. The best way to protect skin when the sun is strong is to spend time in the shade between 11am and 3pm, and to cover up with a T-shirt, hat and sunglasses."


text:
Is KRS-One Dissing You?
I've been getting a steady stream of emails from fam this past week over this new song by KRS and Marley Marl called "I Was There" in which he knocks "so-called objective rap historians". They're concerned KRS-One is dissing me.
Nah, don't worry! Even if he was, I got a strong ego to try to step on anyway.
I really do think that the event at Stanford that gathered hip-hop scholars, journalists, and at least one agitated rapper last year has something to do with him doing this track. (I wasn't there. Had a niece's first birthday to go to back home.)
The beef that opened up there has been squashed so there is no need to go over that again. But apparently Kris is still mad about the ways rap history is being written. Note that he didn't say "hip-hop history" or "hip-hop generation history".
Anyway, given that history, it's amazing that he's teamed up with his former nemesis Marley Marl, and although I don't think "I Was There" is that great, I think "Hip-Hop Lives" could be the best work both have done in years.
Honestly, I'm a little jealous of this video. It's just really well done, and might save you the work of having to read 800+ pages (even though it shouldn't!)
So no fam, it's all love out here in the Yay…
5 Responses to "Is KRS-One Dissing You?"
Dumi says:
glad you addressed that. the vid is ill. your work is and will remain a cornerstone of hip hop studies. nuff respect.
ToddA says:
Okay, now for some irony.
I directed this video…and you know what? Your book was among some of the things that inspired me to take this visual approach.
I thought to myself, I can't just have the Blastmasta stand in front of the camera and spit verses about why "Hip Hop Lives". If it indeed, "lives", then naturally there should be some sort of lineage, right?
CSWS was what actually made me think…"Hmmm..how about having KRS walk a timeline of sorts, exploring some of that lineage?"
I felt confident enough to take this approach because…well, for lack of a better phrase…I was there :). "There" meaning, I was around to actually purchase Criminal Minded with saved allowances….to see Run-DMC hit the mainstream with a performance on American Bandstand…to breakdance (or think I was breakdancing) to "Electric Kingdom".
Now that I've dated myself, let me go on to say that I'm not on any particular side of the matter, but the Stanford incident was pretty peculiar. Having known of the incident prior to the video shoot, I wondered what kind of guy is Kris going to be? Is he going to be difficult to work with???
To his credit, he turned out to be one of the best artists I've worked with on a video. He was open-minded, took direction well (which was my biggest concern prior to the shoot), and was one of the most personable people I've ever met. He was genuinely interested in the conversations he had with random people at the shoot. It didn't matter who they were…a PA, a young actress' mom, a friend of a friend who was there just to hang out. He made that experience…well…an EXPERIENCE. In fact, I'd love to do it again.
Unfortunately, this adversarial relationship he seems to have with Hip Hop academia exists, but for what it's worth, I gather that he possesses the disposition to possibly get over it one day.
So…I guess what I'm trying to say is that in all of this…EVERYONE wins. Chang's CSWS influences KRS's video and KRS turns out to be a good guy.
Haha, I know it sounds real "kumbaya-ish" of me, but hey, the cosmos is crazy like that! 🙂
Todd Angkasuwan
Director, "Hip Hop Lives"
Zentronix says:
todd, oh snap i didn't know that was you! today it all makes sense…
plus you're too modest. folks should know that you also directed kool herc in jin's 'top 5' video and they should know about your movie:
fam, check here and here…
Yeah KRS could be talking about almost anybody. However, I think he might be talking about Adisa Banjoko (who challenged KRS to a debate). It got ugly and Bam created the peace.
On the other hand, I was in Florida when KRS criticized Cant Stop Wont Stop hard. KRS is the cultural critic who hates critics! So, its all about where was the head of KRS ONE when he wrote the track? Was he still mad at the guy he ducked in a debate? OR, was he bitter at Jeff for minute issues no one else cares about? I guess the world will never know.
I've only had a chance to listen to the album once, but it seems to me KRS is offering his own, lyrical version of the history of hip hop…all of his tracks have a bent towards where hip hop has been and where it has to go…on the itunes download, there is a "making of" video, and he begins discussing some theories on history and how it is made…seems like he's trying to pull the historians who he says are from the "outside" into the cipha…
african underground :: depths of dakar
lifesavas :: gutterfly: the original soundtrack
chuck brown :: all about the business
k'naan :: dusty foot philosopher
tracey thorn :: out of the wood
the good the bad and the queen :: the good the bad and the vice president's fall guy
el-p :: i'll sleep when you're dead
arcade fire :: neon bible
antibalas & john mcentire :: security
omar sosa & greg landau :: d.o.-a day off
richie spice :: in the streets to africa
vijay prashad :: the darker nations
cormac mccarthy :: the road
brian coleman :: check the technique
justice for dr. antwi akom
benn loxu du taccu, africa talks
bloc, activist networking resources
b plus and coleman
buy blue
clamor mag
Add me to the Can't Stop Won't Stop email list for updates and thangs:
For a complete list of Jeff's appearances, check Dates.