In spite of our chosen name, we invite anyone to join us at our monthly luncheons. We meet in local restaurants and at private homes to gather in prayer and fellowship. Our informal group endeavors to relate our Christian beliefs to contemporary issues, discussing current events as well as to incorporate our rich Hickory Grove Church history and the values obtained by our closeness to one another in Christ.
nativity outdoor decorations nativity outdoor decorations 6 outdoor nativity scene with light in snow lighted outdoor nativity decorations.
Tony Fletcher works as an Environmental Epidemiologist in the Epidemiology Department,at PHE’s Centre for Radiation Chemical and Environmental Hazards (CRCE). In that post he contributes to the Environmental Public Health Tracking Programme.
Tony joined Public Health England in 2013, part time, and splits his work time with the London School of Hygiene and Tropical Medicine (LSHTM) which he joined in 1992. At LSHTM he is a Senior Lecturer in Environmental Epidemiology in the Department of Social and Environmental Health Research. He also has an honorary post in the US since 2007, Adjunct Research Professor in Environmental Health in the School of Public Health, Boston University, Massachusetts. He was elected President of International Society for Environmental Epidemiology, serving during 2003-6.
He has over 30 years work in occupational and environmental epidemiology and risk assessment, with experience of studies of risk factors for cancer, respiratory disease, endocrine disruptors and other adverse effects along with genetic and other mechanisms. His research encompasses epidemiology and risk assessment of a number of exposures, both occupational (including foundry work, asbestos, silica, welding and rockwools) and environmental (air and water pollution). In recent years he was worked mainly on studies of the health effects of drinking water contaminated by arsenic and perfluorinated compounds.
During 2006 to 2013, he was running a major research effort on the health effects of drinking water exposure to Perfluorooctanoic acid (PFOA or C8), in West Virginia and Ohio, USA. He was part of the “C8 Science Panel” established to assess the links between PFOA and disease, with his work focusing on cancers, immune and endocrine disease and mechanisms of action of these perfluorinated compounds.
On arsenic he is principal investigator for the PHE - led study of the association between arsenic consumption from private drinking water supplies and measured biological levels in the population of Cornwall. While at LSHTM he ran the ASHRAM study on cancer risks in relation to water contaminated by arsenic in three countries in Central Europe, funded by the European Union.
As well as research he has been involved in hazard and risk assessment, for example contributing to several Monographs on the evaluation of carcinogenic risk at IARC and as a long-standing member of the Health and Safety Executive’s Committee "WATCH" (Working Group on the Assessment of Toxic Chemicals) providing advice on setting occupational exposure limits and other tools for prevention of risks arising from chemicals at work.
Following a first degree in Natural Sciences in Cambridge University he completed an MSc in Occupational Health and Safety and a PhD in the Occupational Epidemiology of cancer risks in steel foundries. He has held jobs at IARC, the International Agency for Research on Cancer in Lyon, France; the MRC Environmental Epidemiology Unit, Southampton and Birmingham and Aston Universities.
This strategy targets reducing the amount of protocol data in packets by sending only the attributes that are needed. Google calls this Partial Response and Partial Update.
Netflix posted about adopting this strategy in their recent Netflix API redesign. We've seen previously how Netflix improved performance by creating less chatty protocols.
As a consequence packet sizes rise as more data is being stuffed into each packet in order to reduce the number of round trips. But we don't like large packets either (memory usage and packet processing overhead), so we have to think of creative ways to shrink them back down.
A partial response is like a SQL select statement where you can specify only the fields you want back. Only the attributes of interest are requested. Previously all fields for objects were returned, even if the client didn't need them. So the goal is reduce payload sizes by being more selective about what data is returned.
Clearly this will reduce the number of attributes in flight, but are there any problems with this strategy? A major problem I've experienced when using partial data are synchronization issues.
Thinking of an API as a database moves the problem to be in the general problem class of keeping two distributed models in sync when both sides are changing and the connection between them is unreliable. Now each model is receiving only partial data, if any data is lost or retransmitted between requests, then resources get out of sync, which can lead to integrity problems.
A user account model on the client side, for example, could ask for the user's preferences just once, preferences could change via another client or via some backend system, and the first client would never pick up changes to those preferences again, during that interval the client could be making a lot of bad choices. Then the user could make a change to those preferences on the client and overwrite any updates that have happened since the last request. If you are dealing with alarms and alerts this all gets a lot worse. With a state synchronization model where the entire resources is returned the window for these errors is much smaller as updated preferences are always being returned.
This brings up an entire rats nest of workarounds, like doing a complete resource sync before writes, but the system gets a lot more complicated. Another direction to go is to drop responses completely. In a database sync model there is really no need for direct responses anymore. What's needed are for all aggregated changes to sync back to clients so the client can bring the client side model back in sync with the Netflix model.
I don't see how this changes how you would develop your application WRT to synchronization in the face of multiple concurrent processes modifying shared state. All that matters is that the window exists. Who would want to develop an application that relies on the window being small?
In one window you can overwrite an old record with a new record that is at least presumably consistent. And a conflict can be resolved with CAS type check. When exchanging partial data the record can be inconsistent, so even if you do have a last write wins approach the data will be frankensteinish. It can help to have a merge protocol when differences are detected. In some cases different attributes have different masters. An age attribute might be mastered by the server side, but a current alarm might be mastered by the component closest to the device. Full state syncs make it easier to keep the data consistent.
Optimistic concurrency control can be used for partial updates. Server should provide distinct generation counters for each entity, which shouldn't be changed between the read and the subsequent write operation from the same client. The generation counter should be returned to the client when it reads entity fields. The client should return back the generation counter to the server when performing partial update. The server then compares the current generation counter for the entity with the generation counter obtained from the client. If they match, then the entity wasn't changed between the read and the update from the client, so it is safe updating fields in it. If the generation counter on the server doesn't match the generation counter received from the client, then the update cannot be proceed. In this case the client should repeat read-update cycle for the entity. The generation counter for the entity is incremented by the server after each successful update.