SALESFORCE MOCK INTERVIEW for Experienced | Scenario Based

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
so hello guys welcome back to the channel and we are up with an another salesforce mock interview so without any delay let's get started [Music] oh yeah oh hi i am having five years of experience and earlier my experience is in maintenance testing and uh rest experiences in salesforce okay so what are your expertise areas in salesforce when i say it is admin or it is development uh i have worked both on admin as well as development i have worked on triggers uh in developer room triggers and effects classes and visual force pages okay so you are familiar with lightning rip component as well yeah okay that's good so what i will do is i'll basically start from the very basic admin part and then i will move to the development part okay so from the admin part uh what are the different types of relationships available in salesforce salesforce basically have uh three types of relationships one is uh one to marry many to many and one is self relationship in uh many to many relationships we have a master detail and look up relationship in master detailed relationship uh record is like uh having strong strong bonding with the detailed object and it follows the cascade delete methodology like if the parent record gets deleted then the child object will get child objects records will automatically get deleted but in the case of look up our relation is very loosely bounded like if it doesn't matter like if you are deleting the records of parent then detailed relationship are still present and one is also the junction object in that we have uh like two master objects on a custom two custom objects and they have mastered it in relationship okay good so have you heard about uh self relationship and uh there is like two more relationships so we have indirect and external root causes yeah in the oneness self relationship like if the account is there and the account wants to look up on its own then we can have set those relationship we can uh look up relationship in that case then that will be called as a self-relationship like the relationship on the same object okay so what what are the exact like difference you all you have already told about look up and relationship look up and master but the difference i was looking in look up and master is in terms of security what is the difference okay in the case of master detail relationship like uh the child records will get automatically deleted if a parent is related in the case of master detail and master object and also a child record will inherit all the security models of the parent in case of master detailed relationship but in the case of lookup it will not be the case and uh also there is no cascade delete in the case of lookup so like they are just independent there will be like if master master objects security model is not followed for the child object in the case of lookup relationship okay so in case of junction object which master object it is going to inherit the security from because in junction object we know that there are two custom like master detail relationship so which object security will be inherited from the parent like which parent will be acting as a primary parent for that object i'm not very sure on this but i think the parent which has this is the main object i guess in that case from that object um yes how we will you are right like main means primary but how we will identify which is the primary object um primary object like um there will be a related list on the related records field on the key in the case of detail uh object so okay um so basically here how we identify like which account is a parent account what we have to do is we have like whatever the field we are creating very first suppose that we have what attention object where i'm creating the first field as a first parent then that is going to act as a parent of a primary object and that primary object will uh give all the security to the child okay so if you have if you have two parent a and b and i'm creating a field with the parent b like the first field as a parent b and then the second field as a parent a then parent b is going to act as a primary here okay so what are the different types of sharing rules available in salesforce uh sharing rules uh like basically there is a model like firstly uh uh excesses given through the owds like uh sorry through the profiles like if we want to have the access on object and its fields and access is given through the profiles and the permission sites but uh also if in the case of records if you want to have access in that case we have sharing rules we have owd we have role hierarchy manual sharing so how many types of sharing rules are there uh sharing rules we have like sharing to when we create then what are the different types like uh i was basically looking for owner based and criteria based okay okay so basically there are three types one is owner based and there is criteria based and there is one more which which is available or we can say that which are made available by salesforce when you enable digital experience in your sales force uh which is formerly known as communities okay so basically one is criteria based one is owner-based one is criteria based for guest user okay thank you okay so when sharing a record through sharing rules what are the various options to whom we can share a record uh we can share the records to uh through owds to like the entire uh users in the organization if we want if we are giving access as public read write and uh we can also give the access through and we can also give access to [Music] other users like yeah i think that is enough we can have give the access to the um and if you want to share to the particular uh particular record we want to share then we can also share that to the manual sharing to the particular user so what what will be the criteria where you will go with the manual sharing uh like if the single record is to be shared in that case any scenario where you have used this oh i'm not use this but i think like if uh in the case of field if you want to share or some in the record if there is a field we can share with the manual sharing and yes and if a particular record we want to share in that case yep that's correct so basically if you wanted to say a record to a particular user or there are some cases when you are going on a leave and you want your colleague to have a look on your records that you are working on you can have a manual setting and then you can save okay yeah yeah so um there is one more uh i'll say that there is one more scenario here can we share our records to a particular user using sharing rules particular user yeah uh yes uh how we can do that uh only record we are sharing firstly we have to give the access to the uh object in that case to profile for permission set and then either we can create the sharing rule for that uh like uh we can give through owner-based sharing rule we can give the access okay okay so can we select the user while sharing a record using sharing rule or is there any way that we have to follow in order to stare i'll come again so can we directly select a user from the setting rule while sharing or we have to follow another way like we have to use some other components here and then only we can say uh we can create a sharing rule and then we can add the users in that and it can be shared with them or either in the case of permission sex we can create the creation permission set and we for which object like you know like convert to record what things are to be shared and then we can share with that okay okay cool so basically uh in order to share or record using a sharing rule to a particular user uh what we have to do is first we have to kind of add that user into a public group then use that public group in the sharing rule because in sharing rule there is no option to select a user yeah in the public groups and even in the public use items in even public uv we can add the user yes okay um cool so uh tell me a scenario where you have been asked to achieve a scenario using customization and you have done this what was the scenario and how did you achieved uh without writing a board uh sharing no no using automation tool basically i'm not i didn't get the question like which for which requirement okay uh what i'm saying is that tell me a scenario where you achieved a requirement using any automation tool okay like uh in the case of uh updating the field i used workflow instead of uh going for a process builder instead of going for three years and and all i did that took okay so uh any other like what are the various automation tool that salesforce provides and what are the difference between each and which is the most powerful among all of them okay like auto in coming to the automation tools we have process builders we have workflow rooms and we can also we also have clothes and uh the basically the difference is main difference is like uh process builder allows many you know things that can be done uh like for calling uh updating the records creating the records and but in the main difference between process builder and workflow is that we can't update uh the child recalls in the case of a process filter uh in the case of workflow rules but if through the process filter we can uh achieve that and also the um we have we can control the flow in the case of process builder like but uh in the case of workflow there is no control over the steps like how it will execute and also i am not use the flows but uh basically all the things can be achieved like creating the records updating deleting and uh getting the catching the recalls uh can be achieved in the close and uh also like the through uh flows can be scheduled for the particular time like as we use for uh if we can uh as we showed you the classes in the patch effects and uh uh like uh curable effects and all those future classes are special in the same way through the flows the classes can be scheduled at a particular time and also through the flows uh call outs can be made to the external services good good so um okay let's say that i have a scenario here okay um i have a visual force piece or let's say that i have a lightning component or a component that can be anything with the ui where i in the ui i have got three four things one is like case subject case description case origin and there is one uh email which is saying that case follow-up email click case follow-up date time okay okay that is the daytime field so when user click on save button what i want to have is i want to save a case record and then i wanted to send an email on the date which was entered into the ui component so how you will do this using customization uh email has to be sent to the user right yes to the case owner email has to be sent but on the same date which was there in the ui so how you will do this using uh not customization basically using the out of box functionality uh that can be uh done through the process builder like every time uh like we can send the emails create the template of email and uh we can like send emails to the process and uh the criteria was when the record is like what you when the record is created it should send an email based on on the date of the whatever the date has been uh yeah every time the record is created and uh at the time of record is created we can create a process vendor for that criteria and uh we can uh like call like schedule an action like [Music] sending an email and we can have the condition set in that like if the date is this two but it is set as today in that case send the email okay you can call email template in that system yeah so basically there is one like uh the process that you till was completely perfect and there is one thing that uh and what we can say that modification needed is instead of checking the date inter is equal to today what we need to do is we need to schedule an action on the date whatever the date is there on that field so we don't need to check and also it will automatically schedule that action for that date okay okay that can be done right yeah even you can use at the process builder or workflow but what will be better um we can do here like workflow will also work because there is only one criteria there are no other criterias but by seeing that salesforce recent releases or salesforce recent updates the best solution can be either process builder or flow builder because that's what salesforce are promoting more and more these days because this both are coming as a part of lightning ui and we can consider these two as a part of uh self first lightning so that's why if there is anything which is coming in our way we should always try to resolve either using flow or process builder instead like we should only go for the workflow nowadays if we have to send an output message otherwise we should be doing all these things either uh either using process builder or a workflow i'm sorry a flow builder and we can also obtain this functionality like using schedule triggered uh uh records in the close right yes exactly okay so there is one scenario again suppose that i have a workflow rule on opportunity okay which is updating the let's say that not on opportunity it is basically an account which is updating the industry to technology okay every time an account is created it is updating the industry to technology okay and there is one validation rule running on the account which is checking the industry field and saying if technology is like industry is equal to technology it is showing the validation error okay so what will happen if a user comes and creates a new account uh without having the technology in the industry field uh in that case like a workflow rule will fire okay like it will uh update the field whatever functionality is doing and that is okay and what about the validation rule uh it will not come into the picture in that case because the last section in the case of because like there is execution criteria so according to the uh flow like uh workflow rule will fire and uh only after work to rule if there are before and after triggers that can fire uh but i told is it the final one like uh as for i i understood like uh workflow rules will after workflow rules only before and after regions will fire but the validation rules and all will only fire once then in the is it right yeah in case of workflow rule it is correct and then my next question was if i replace my workflow rule with the process builder then what will happen uh same process without fire okay so process builder will file then in that case in that case will run or not no no no validation rule will be overlapped like a process builder will run with no celebration no time okay so basically in this case when we replace process builder with the workflow rule and no no we replace workflow with process or we replace workflow with trigger both the cases validation rule will execute so that's the key here what happens whenever we are trying to execute our workflow rule i'm sorry we are trying to update any record from process builder it does execute the validation rules as well okay okay like then the that criteria like of following like the hierarchy that will not come into the picture like your process builders will fire after the workflow rules but uh validation again first first it will fire the validation rule it will say that industry is not technology uh it will go ahead and then it will execute your process filter and then once the process builder will update the field it will again check the validation node and that time it will find the industry as a technology and it will throw the error and similar with the process with the trigger also right so we have do we need to set some criteria in the trigger [Music] yeah there is no need because at the end we want what we want is we want that there should not be any dirty data in our salesforce instance so we want the user to want okay okay okay okay so what is difference between freezing a user and deactivating a user uh actually in salesforce there is no option for deleting the user we can deactivate them uh uh we can please the user so that you know some user has left the company in that case we can freeze them user should not be able to access the salesforce folks okay so what's the difference between freezing a user and deactivating a user uh the activating user um is like uh still the user is present and uh like we want to deactivate that person uh and but in the case of freezing like it is uh like uh like we can freeze the user if the user has left and its records can be um i guess if i am not wrong its records can be uh transferred to another user who can look after if the user has left in both the cases he can transfer yeah in both the cases we can transfer the records because whenever we are transferring a record to the user who is active we will be able to transfer but what happens if we freeze even if we freeze or if we deactivate a user both the cases user will not be able to log in but what in case of freeze the license will still be occupying there will be one license which will still be occupying by that user who has been frozen but if we deactivate one user we will free you uh we will free up one license and then we can create one more user using that license okay and uh records can be shared like the person yeah record can be transferred and in case of a user who is inactive if we wanted to create a record as the owner of inactive user will get the error but in case of freeze if we create any record or if we transfer required to the user who is frozen will not get any error that will be transferred okay license is transferred yeah license and records are transferred okay okay okay so um suppose that there is uh and do you know that we can also add the login ip ranges at a profile label no i've just heard about it no idea okay so basically we can add the login ip ranges at a profile level as well by going to the network access so the question is suppose that i have added login ip ranges at a profile label which is saying whatever the login ip i have given over there okay and then there is one user who are logged trying to log into the salesforce outside of that log in ip which has been set at the profile level so what will happen uh okay login and that user will not be able to log in because that limit is set like these ip addresses should be not allowed to access yup correct you're right so so uh so now let's uh replace that profile ip like uh like forward on that part now we have got a new question here i have added some ips at a network access label okay but now user is trying to access outside from the ip uh we can say that outside from the white listed ips so what will happen this time [Music] yeah in that case i think you should not be able to do to exist um are you sure fight listed at ips our user is having the range in that ips or not no no user is trying to log in outside of the ip which has been white listed at network access level oh i think yeah i just confused with blacklist yeah i think in that case the user has yeah your user will get access so i have login because just like this particularly mention like these particular ranges of ips should have access but user is trying to log in outside of those ip ranges no in that case okay so basically when the user is trying to login outside of the ip range who are added into the profile then user will not get access okay but if user is trying to log in outside the ip ranges which are added into the network access then user will be able to get the access but before that user have to verify their identity either using the message at their mobile phone or using the code which has been sent to their emails okay okay i got it got it yeah yep so what are the different types of reports available in salesforce uh it's somebody okay so you said that in the deployment you've used chain sets and migration tool like and so what the difference you have felt between these two uh basically uh i work mainly on this tool and in the case of and i'm not work much on chain sets so if there are a destructive changes we can uh roll back into the developer or uh like if we deployed something that was not required that destructive changes can be wrong and it will be although if suppose we are deploying uh classes and triggers and we kept that check value is true then they will be validated and when we are going to deploy them then just one day before we can deploy so that it will reduce the burden like uh no there is no need to validate and then deploy the changes so before only we can keep them validated and then we can just value and just deploy them okay so basically the difference that you have told is like intense set we have to if you wanted to roll back we have to again deploy and in uh you already said we can deploy that okay i'm sorry so one thing is that uh there is there are three four options like current specified tests and local tests yeah you can have you can have that in and as well you can specify that and this level yeah okay so you can specify it both i either change it or uh what we say apache and there are the two main differences one we cannot deploy the destructive changes using chainset yes and the other is that we cannot deploy the profiles using the chainset okay so if you if we have to do this that's why companies try to adopt some other methodology for deployment like we have got apache and sensors dx or autorabbit flow flossum or coppado there are many tools which are available okay okay okay okay so now we will move forward to the development side okay and i'll start from the very very basic concept so what are the various access modifiers are available in salesforce um we have public global private protected abstract um yeah okay cool so suppose that if i wanted to extend my class i wanted the other user to extend my class how i can do that we have to use the virtual keyword in that case and uh by using virtual keyword that class can be standard and yeah okay cool so um and if i wanted to override a method how i can do that um we have to firstly keep the in the main class we have to keep the virtual keyboard okay and in the case of child class we have to keep like extends and the end extends then class name okay then uh in the method it's like keeping the with the return type we have to also place override keyword for the method yeah exactly that's how we do okay so uh what what is the difference between method overloading and all lighting um or loading basically and overriding a method overloading basically uh is like in the same class if i have declared one class uh in that one method is there i have passed a parameter okay but in the same class if i'm using uh like here and passing additional parameters uh then with the same method name that class becomes method over loading okay methodology like i have to first keep the virtual keyword then extend in the case of child class then it will then keep placing the keyword like overwrite with the method that class can be overwrite so basically in case of uh in case of override parent child relationship is required yeah okay cool so what are the different types of apex triggering salesforce uh we have before we have various events on which trigger fire like before events and after events then delete events and undelete apparently oh yeah these are context variables i'm talking about the types what are the types um types as in like so basically we have two types one is before and after okay okay okay okay so can i make a call out from an apex trigger web services okay notices so i'll not go that part so basically the answer is yes um but to make that a call out from the trigger we have to use we have to take the help from a future method yes and we also make the call outs and uh epics classes using future method so is it required to give a call out through trigger we can just make a call out through the web uh um it does required based on what uh it is required like basically i'll say based on the requirement where you wanted to have like sometimes you wanted to uh call the call out from the feature method sometimes you wanted to use some other ways like givable or better picks and but when you are trying to call from an apex trigger it is mandated to have either feature or keyboard yeah okay okay either call a feature method or a cable interface okay okay so uh with that what is a future method uh future method like is basically basically it follows asynchronous approach like uh if basically it's used in the call-outs and also when there is mixed pml operations like for the setup and known setup objects like we have users uh and permission sets all permissions are given to the setup object and and another objects like if we are going to insert accounts and contacts together that in that case that cannot be done uh together so for that purpose we keep uh some portion in future context and another to run normally okay so what are the different interfaces you have used in batch apex database or detachable okay so what is the use of stateful interface stateful basically gives the how many number of records are processed and basically the status of that class which we store in the database dot com context so to just uh see uh like view what is going on in the past class like how many records are processed and how many calls are failing and uh for that to be straightforward so basically it is for maintaining the state of the variables not the class okay so if someone is asking like what is then you have to say is to maintain the state of the variables across all three methods okay okay like functionality is saying like it is used to mention like capture what is going on yeah basically it is in order to like as i said it is for maintaining the state of the variables so suppose that if you wanted to pass the value from one param like one method to another method for the same variables as you said it is for counting the number of records has been processed in the finish method you can use a database dot straightforward okay because if you don't use database dot stateful and whatever the value you set in the finish method of sorry in the execute method will get reset in the finish method if you are using database dot stateful then only whatever the value you set for a variable inside execute method it will persist till finish method as well okay okay okay so uh that's about a database dot stateful interface so uh do you know as just said that we cannot delete the user can we write a trigger on our user uh where the context is before delete and after delete yeah sorry yeah so what i was saying is that and as you said we cannot delete a user in salesforce so can i write a trigger on user where i'm saying the context is either before delete or before insert okay so i actually i lost in between like we want to delete that user no no we don't want to delete the user no no we don't want to delete the user because we cannot delete a user right yeah what i'm saying that can i create a trigger on user where the context is before delete yeah we can use are you sure because we cannot delete the user like if we want to process some like if we want to throw something error like if person wants to delete the record or delete the user by mistake you want then if you want to show the uh some error on the screen in that case but we don't have that delete button on user right yeah but yeah okay okay so basically uh your answer was correct we can like we can write a trigger on the delete before delete operation it will not throw any error but even there is no possibility if you try to delete a uh user event from the trigger it will salesforce itself will give the error your trigger has to do nothing with it but you can write a trigger that's it okay so um okay that was about the trigger okay so uh what what is the difference between soquel and estonian uh circle basically it returns list of records and ssl deleted on the list of and list of lists of records and um circle basically like if you want to fetch the records of particular uh objects and not particularly sorry to record like if you want to uh uh if you want to select some uh fields and from the object and in that case we can use open and with local queries we can insert in the data using dml operations and so so fsl is just for searching if you want like it should return all the pages with the specific value it will just return the results and the so sosl we use mainly in our index classes and all to perform the dml operation to fetch records can we use ssl in our class as well uh yeah especially can also be used okay okay cool what are the best practices for writing on epic sugar and test classes uh and for the apex trigger there should be like it should be meaningless if extremely they should only uh call the ethics classes which you want to uh write like perform the action effects classes and along with the apex matter and there should be only one uh triggered per object and when we are deploying we should check like if a particular if a trigger is meeting the criteria like if it is giving some uh code coverage after uh if after we are writing test classes tests on this trigger like it should give minimum coverage and in the case of text sex uh test classes uh we have to use uh test set up methods okay or either use text test factory classes or test tutorials to prepare the data and then refer them into test classes and use system dot azure conditions to check whether like expectation and actual conditions are moving or not and testing for negative and positive records as well and uh try for both single single records and for the multiple records uh to process using lists in the test classes and also like if there is requirement uh and also test setup uh in the test setup if we are using then we have to declare some test methods using uh at the rate of each test which is there now and testing for the bulk records is preferable when we are using test classes and uh also we can use static resources and test classes if you want to process cool so what what is the difference between with sharing and without sharing class uh with sharing is like if you want to run in the system mode so in the user context like uh if you want that sharing rules and sharing settings of the user is it should come into the picture in that case we write with sharing keyword but without sharing there is no need to write but like if there is no keyword written like without sharing it will automatically run in the system mode and there is no need like user any like users permission sets and all are not into the picture okay cool so in case of lightning web components what are the different decorators um we have track decorators api and buyers track is now just for uh not for the primitive data but for the non-permitted data like objects and arrays if you want to fetch in the if you want to bind in the templates uh html templates and we can use track and the api is for exposing the uh that javascript publicly i like exposing the liking web component publically like i want to access my child record sorry child component in the the parent component then i can i should decorate that with the target of api and buyer basically if you want to set something from the sales force itself uh then we can pass in the buyer and we use fire adapters and wire computation for that okay so suppose that i want i have a component here one component i can say parent okay okay and then i have got two components child one and charge two okay now i wanted to establish a communication between child one and child two how we can do that okay uh we can uh firstly through the kebab case we can write the we are following the like communication between two childs or services we can use you can write lightning message service and then we can subscribe and one class can publish the message okay and if i don't want to use any of these either or what i'll say lms uh what what where other options i do have and in that case but i think we can fetch those comp uh child components in the parent class using kebab case and then we can pass the values to both of them and at the slots i guess so um your answer is partially correct here okay so what we need to do here is first we have to establish an event communication between child one to parent okay yeah and then in the parent in our in our handler method what we will do is we will get the data whatever data we are getting from the child and then we will call the child method use from the parent and the method in the child that will be api method okay firstly from child to parent using the custom events like we have to dispatch the event then parent will yeah even we can send the data while calling api function yeah okay and the reason why we don't want to use this pub sub or lms because pub sub and lms might be listening by some other users as other components as well and there are possible like possibilities uh the data can reach okay and the other part is also we don't want to compromise with the performance of our components so we don't use these publisher android lighting services modules maximum if we can do this using events we don't use lms at all like if there are more than two components like more than two child if until unless uh the components are not like if the components are not related with each other then definitely you will go with lms instead of going with that uh what we said that pops up because lms is a part of salesforce lightning and that is a standard one so we'll go with that we'll not use pops up okay so yep and and that was about it so what are the various life cycle hoop uh life cycle hook methods in lwc um like from firstly uh we have like a mount there is mounting piece okay in that case firstly there is constructor which will be called and then there is connected callback okay after connected callback it will check if there are child child if there is a child component then if it is there then it will execute the constructor of the child component connected callback of child component then rendered callback of child then it will come to the parent standard contact will be the okay so which uh which will execute first in this scenario so the scenario like which will execute first either wire method or connected callback connected callback yes connected okay you're right so and if i replace connected callback with rendered callback then which will execute first rendered callback or wire method uh why because properties will come into the picture if it will check the properties if it is there then it will call the rendered okay so what if i wanted to dynamically create the component uh is it available in lwc oh no i don't know about it okay so basically it is not calling yeah dynamic run time we have in aura we have uh dollar dot create component where we can create a component at the runtime okay but in our lwc we don't have that but as a workaround what we have is you have render method of life cycle hook what it does is it returns a template so we can use that method if you wanted to have a runtime yes yes like basically render we use like if we have two templates render conditionally like if you want to show this map this template then another one like to sign in and sign up templates we can render yeah yeah and the reason is like if you use false what it does even if you are using aura if it try to render your child component and you get the error and if you are using renderer to render the different components then it only renders the components when the condition is true yeah okay so that that's about renderer so what are the different ways to call our method from one like from our lwc to our rfs class oh you can use buy it okay and we can also call methods comparatively through wire if we are using then we have to you keep aura enabled in that x class and then we can uh refer that in the lwc and also cache is equal to true we need if we want don't want if we want that data or like memory should be cleared after it just improves the performance if we are fetching the records list of records in that case cash flows and then we are importing that and on the on that method so can we run the promise environment in case of wire method as in oh yes it can be okay yeah correct we can so when this wire method does execute uh when despite method the wire runs basically on like it is based on lighting data services so whenever we refresh in that case wire automatically runs and it fetches the latest values okay so can i call a method wire method from a button click yes how no no no no no no we can't i think so we can't because buyer just runs in like can we just refresh in that case it automatically fetches the values from the uh from the record from the sales force so i don't know like how we can do maybe through uh if we keep something in promises i don't know exactly like through that procedure so basically there is no direct way to do that okay but there is one indirect way or we can say that as a workaround so if you have noticed if we are binding any parameter inside wire method okay and then we are changing the parameter wire method automatically calls yeah okay so if we can do something similar where we are binding a method to the wire method uh we are finding a variable and on the button click we are changing the value for that variable that will trigger the call to effects okay so nothing to do with the reactive parameters nothing nothing because now all the parameters are reactive um like leaving few of them like objects of objects or areas of arabs so that's about that too lwc and aura okay um yep i think i'm done uh you have anything else for me [Music] you
Info
Channel: Salesforce Geek
Views: 19,504
Rating: undefined out of 5
Keywords: salesforcegeek, salesforce, salesforce interview questions, salesforce developer mock interview, salesforce mock interview questions, salesforce mock interview questions and answers, salesforce mock interview, salesforce mock interview for experienced, mock interview for salesforce developer
Id: X1Keqjp_bUU
Channel Id: undefined
Length: 54min 54sec (3294 seconds)
Published: Wed May 05 2021
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.