text:
French | Translate :
Escape This Page Victim Support/Information: 416-808-7066
Victim Crisis Response Program
High Risk Support Services
T.E.A.R.™
The Trauma Dog Program
Volunteer T.E.A.R. Youth Leader
Volunteer Crisis Counsellor
Additional Support Resources
F.A.S.T. Final Evaluation
Yorkville Run
Chief's Gala
Victim Services Toronto | Leadership Team
page,page-id-97,page-child,parent-pageid-86,page-template-default,ajax_fade,page_not_loaded,,qode-child-theme-ver-1.0.0,qode-theme-ver-9.4.2,wpb-js-composer js-comp-ver-4.12,vc_responsive
Bonnie Levine
Bonnie Levine has been working as the Executive Director of Victim Services Toronto since January 2005. Prior to joining Victim Services Toronto, Bonnie was the Executive Director of Toronto East Counselling and Support Service, a community mental health agency. Working in a variety of community and hospital settings throughout her 30 year career, Bonnie has extensive experience and expertise in designing, implementing and managing innovative programs and services with many diverse communities and vulnerable groups.
An active volunteer, Bonnie has served on a variety of committees and community Boards. Currently, she serves on the Board of Directors of Cota, an accredited community-based organization that supports adults with mental health and cognitive challenges.
Bonnie holds a Master of Social Work degree from the University of Toronto, a Bachelor of Arts degree from Concordia University and has earned certificates in Alternative Dispute Resolution, Mediation and Crisis Intervention.
Bobbie McMurrich
Associate Executive Director
Bobbie McMurrich graduated from the University of Western Ontario with a major in Psychology and a minor in Social Work in 1985. After working briefly at Hamilton Psychiatric Acute Care and Hamilton/Wentworth Detention Centre's Social Services Department, Bobbie spent two years travelling in Africa, South Asia, and Australasia and then settled in Toronto.
Bobbie began her career at Victim Services Toronto in 1991 as a Relief Crisis Counsellor. After a short time she promoted to a full-time permanent Crisis Counsellor position where she remained for the next 11 years. Bobbie then became the Volunteer Coordinator and one year later was promoted again to Director of Programs overseeing operational functions of the agency including supervising all direct service staff members. Currently Bobbie's position is Associate Executive Director.
Kiran Brar
Kiran Brar started her role with Victim Services as a Social Work student placement in 2009 and was hired as a full time Crisis Counsellor in 2010 upon completion of her placement. In 2015 Kiran became the program manager for the Crisis Response team and is currently managing one of the largest HR portfolios within the agency.
Kiran has over ten years of experience in the social services sector, speaks five languages holds a diploma in Social work, a degree in Business Management in addition to Crisis Intervention, De-escalation and Harm Reduction certificates. Kiran continues to volunteer, sits on various committees to implement an emergency response protocol and is excited to be the newest addition to the leadership team.
Link to Crisis Response Program
Sarah Rogers
Sarah Rogers began her career with Victim Services Toronto as a placement student in September 2005 and was hired as a relief crisis counsellor upon the completion of her placement in 2006. Sarah became a full time crisis counsellor in 2007 while developing the T.E.A.R.™ Program. She was eager to expand her skills and joined the management team in 2010. Her current responsibilities include: managing the T.E.A.R.™ and volunteer program, supervising placement students, grant writing, developing and implementing new innovative projects.
Sarah brings a wealth of knowledge and skills in program development, public speaking, leadership and social media. She holds an Honours BA in Sociology from McMaster University and an SSW Diploma from Seneca College.
Link to T.E.A.R.™
Link to Volunteer Program
Lindsay Upton
Lindsay Upton has been working in her role as a Program Director since June 2007. She has extensive experience in crisis intervention and assists clients in navigating complex bureaucratic systems. Her responsibilities include managing a dedicated group of case coordinators who are responsible for providing timely emergency financial aid and case management services to victims of violent crime and sudden tragedy. Her team links clients to community resources and works alongside clients to challenge individual and systemic barriers.
Lindsay holds a Social Work Degree from Ryerson University. She is an active volunteer, has served on numerous committees, engages in public speaking engagements and is dedicated to developing community partnerships and community response protocols that challenge barriers experienced by diverse and vulnerable populations. Lindsay is also a recipient of the 2016 Attorney General's Award of Distinction.
Link to High Risk Support Services
Link to Case Management Services
Victim Services Toronto provides immediate crisis response, intervention and prevention services which are responsive to the needs of individuals, families and communities affected by crime and sudden tragedies.
Tweets by VSToronto
40 College St.
Toronto, Ontario M5G 2J3
Email: victimservicestoronto.com
Copyright 2016 Victim Services Toronto


text:
Casanova Killers
About the Seriesk
"Casanova Killers" showcases the stories of men who seduce their victims with devilish good looks, irresistible charm, and all the right moves. From the outside, they look like every woman's fantasy come true. But behind the "Don Juan" façade is an ugly, cold-blooded killer.
A Wolf in Sheep's Clothing
Aired on Feb 26, 201343m
Karen is found slain in her home and her boyfriend helps investigators find her killer — but investigators uncover his true motive. Greg is found dead and it appears to be a suicide. But the scene he left behind causes investigators to dig for answers.
Where There's Smoke... (Casanova Killers)
Aired on Mar 05, 201343m
Michael can barely keep it together as he calls police to his home. Upon arrival, officers find his wife dead. When firefighters extinguish flames from a burning house, they find the body of Jennifer. Her boyfriend collapses in tears when he learns.
Lethal Lovers
Carolyn and Ken are found dead. As police unravel this case they find the couple had a less than perfect marriage. Tara disappears after returning from a trip, but this missing persons case turns into a murder investigation.

redpajama_set_name: RedPajamaCommonCrawl


Heaselands, the home of the Kleinwort family and famous 40 acre haven to countless unusual and often generally believed unavailable garden plants, has recently completed its renovation programme. As a continuation of this work the nursery was projected, by the garden staff alone, into existence, with the aim of allowing its horticultural treasures to be shared with a wider audience.
The nursery is open by appointment only. And for stock availability and prices, please do contact us.
The garden and nursery is regularly inspected by DEFRA and is free from Sudden Oak Death ensuring the produce can be purchased with confidence. Over the years a policy of self reliance and strict quarantine has been followed avoiding contamination from infected material.
Future years will hopefully see the expansion of choice including the availability of very rare deciduous azalea cultivars propagated from Heaselands' two National Collections.


Enjoy a 5 % discount by booking through our website.
New private parking, wide, without ramps and in front of the hotel.
The Hotel Xauen, in the center of Jaén. NEW!! Private parking spacious and convenient. We explain how to get here by car, check our Contact and map section. Any questions, call 953.240.789.
Constitución square and the Palace of the Vilches.
It is a comfortable and unique hotel, for it is the only one located in the heart of Jaén , where you can enjoy tranquility or the bustle of the city. From the hotel you can start your tour of this great city, discovering the beautiful street and squares and finding restaurants and traditional taverns where you can taste the typical "tapas".
The solarium of the Hotel Xauen, equipped with sun loungers and an outdoor shower, offers fantastic views of the city and the Cathedral. Thanks to the spectacular and the peculiar beauty of these views, the hotel has already attracted several national and international television channels, turning this place on an intimate, romantic and cozy outdoors TV set.
The Hotel Xauen is constantly changing since 1969, offering our clients all of the advantages based on our experience, our well trained staff and the use of noble and welcoming materials.
Here you will find a very attentive staff and an ideal place to work comfortably, but also to rest and relax. Everything is possible at this unique hotel.
At the Hotel Xauen we are commited with offering quality services and personalized attention.
We are the closest hotel to the cathedral and from our viewpoint you can contemplate amazing views of the city.
Enjoy Jaén, its traditions and people from the only hotel located in the heart of the city.
Organize your events in a welcoming, intimate and select environment.


The problem is one of implementation. Powerful special interests will always try to exert influence in the dark. Unfortunately, for Rhode Island constitutional convention referendum campaigns during the past 20 years, the implementation has failed; dark money has swamped the clean money.
The Rhode Island Constitution specifies that every decade a referendum on whether to convene a constitutional convention must be placed on the ballot. The next such referendum is on the Nov. 4 ballot.
During the last two constitutional convention campaigns, in 1996 and 2004, the no campaign spent the great majority of its money without public disclosure prior to the election, and repeatedly violated Rhode Island�s campaign finance disclosure laws without any type of meaningful penalty. The largest contributors to the no campaign were public employee unions.
The 2004 campaign illustrates the pattern of contemporary constitutional convention politics. Several weeks before the election, a Rhode Island College poll found that the yes campaign was ahead 2:1 (44 percent for, 17 percent against, 26 percent undecided, and 9 percent won�t vote on it). This helped motivate the no campaign to engage in a massive advocacy campaign, including robocalls, signs and TV ads, during the last week before the election. The union expenditures on the ads were not publicly disclosed until after the election.
The final vote was 48 percent for, 52 percent against.
The campaign that was largely untraceable in Rhode Island during 1996 and 2004 was more transparent for Connecticut�s 2008 constitutional convention referendum. A week before the election, the Hartford Courant published a poll of voters finding that 50 percent favored a yes vote, with 39 percent opposed and 11 percent undecided. Days later, a massive no campaign was launched. Newspaper accounts place the no campaign expenditures at $829,350, of which the public teacher unions alone spent $765,000, with the yes campaign at $12,000.
The last-minute ad campaign, which blitzed the airwaves, depicted a constitutional convention as dominated by special interests: men in business suits smoking cigars in smoke-filled rooms � with no mention of the unions that funded the ads. The referendum was defeated 59 percent to 41 percent.
The root of Rhode Island�s dark-money problem in constitutional convention referendum campaigns is an implicit philosophy that the best enforcement mechanism is the ballot box. That may be an effective mechanism for candidates, who must face elections every few years and have highly skilled opponents motivated to highlight noncompliance. But it has not been an effective mechanism for a constitutional convention referendum, where elections are spread out every 10 years, the names of the players change, records become effectively inaccessible after only a few years, and public ignorance of the institution is sky high.
Given the public�s remarkable ignorance of the institution of the state constitutional convention and thus vulnerability to massive last-minute ad campaigns, state constitutional conventions need even more rigorous disclosure requirements than gambling referendums.
J.H. Snider is the president of iSolon.org and maintains the RhodeIslandConCon.info website, including a history of the 1996 and 2004 campaigns. Beverly Clay was Operation Clean Government�s research director from 1993 to 2011.


This post is about "The Book of the Watchers" and things in it that stood out to me. This is the first of 5 books known as the book of Enoch.
Chapter 6 talks about what caused the flood. It also gives the names of the angels involved. It talks about angels having feelings and taking wives.
Chapter 7 talks about several different technologies being given to man from angels. It also talks about giants.
Chapter 8 talks about weapon making knowledge and crafting of strange armor. They also talk about the transfer of more strange technologies.
1 And Azazel taught men to make swords, and knives, and shields, and breastplates, and made known to them the metals of the earth and the art of working them, and bracelets, and ornaments, and the use of antimony, and the beautifying of the eyelids, and all kinds of costly stones, and all 2 colouring tinctures. And there arose much godlessness, and they committed fornication, and they 3 were led astray, and became corrupt in all their ways. Semjaza taught enchantments, and root-cuttings, 'Armaros the resolving of enchantments, Baraqijal (taught) astrology, Kokabel the constellations, Ezeqeel the knowledge of the clouds, Araqiel the signs of the earth, Shamsiel the signs of the sun, and Sariel the course of the moon. And as men perished, they cried, and their cry went up to heaven . . .
Chapter 9 talks about God knowing things before they happen.
Chapter 12 talks about the "Watchers" which seem to be the angels mentioned before.
Chapter 13 talks about angels asking Enoch to talk to God for them and of angels being afraid.
1 And Enoch went and said: 'Azazel, thou shalt have no peace: a severe sentence has gone forth 2 against thee to put thee in bonds: And thou shalt not have toleration nor request granted to thee, because of the unrighteousness which thou hast taught, and because of all the works of godlessness 3 and unrighteousness and sin which thou hast shown to men.' Then I went and spoke to them all 4 together, and they were all afraid, and fear and trembling seized them. And they besought me to draw up a petition for them that they might find forgiveness, and to read their petition in the presence 5 of the Lord of heaven. For from thenceforward they could not speak (with Him) nor lift up their 6 eyes to heaven for shame of their sins for which they had been condemned. Then I wrote out their petition, and the prayer in regard to their spirits and their deeds individually and in regard to their 7 requests that they should have forgiveness and length. And I went off and sat down at the waters of Dan, in the land of Dan, to the south of the west of Hermon: I read their petition till I fell 8 asleep. And behold a dream came to me, and visions fell down upon me, and I saw visions of chastisement, and a voice came bidding (me) I to tell it to the sons of heaven, and reprimand them. 9 And when I awaked, I came unto them, and they were all sitting gathered together, weeping in 10 'Abelsjail, which is between Lebanon and Seneser, with their faces covered. And I recounted before them all the visions which I had seen in sleep, and I began to speak the words of righteousness, and to reprimand the heavenly Watchers.
Chapter 15 talks about giants being evil spirits.
1 And He answered and said to me, and I heard His voice: 'Fear not, Enoch, thou righteous 2 man and scribe of righteousness: approach hither and hear my voice. And go, say to the Watchers of heaven, who have sent thee to intercede for them: "You should intercede" for men, and not men 3 for you: Wherefore have ye left the high, holy, and eternal heaven, and lain with women, and defiled yourselves with the daughters of men and taken to yourselves wives, and done like the children 4 of earth, and begotten giants (as your) sons? And though ye were holy, spiritual, living the eternal life, you have defiled yourselves with the blood of women, and have begotten (children) with the blood of flesh, and, as the children of men, have lusted after flesh and blood as those also do who die 5 and perish. Therefore have I given them wives also that they might impregnate them, and beget 6 children by them, that thus nothing might be wanting to them on earth. But you were formerly 7 spiritual, living the eternal life, and immortal for all generations of the world. And therefore I have not appointed wives for you; for as for the spiritual ones of the heaven, in heaven is their dwelling. 8 And now, the giants, who are produced from the spirits and flesh, shall be called evil spirits upon 9 the earth, and on the earth shall be their dwelling. Evil spirits have proceeded from their bodies; because they are born from men and from the holy Watchers is their beginning and primal origin; 10 they shall be evil spirits on earth, and evil spirits shall they be called. [As for the spirits of heaven, in heaven shall be their dwelling, but as for the spirits of the earth which were born upon the earth, on the earth shall be their dwelling.] And the spirits of the giants afflict, oppress, destroy, attack, do battle, and work destruction on the earth, and cause trouble: they take no food, but nevertheless 12 hunger and thirst, and cause offences. And these spirits shall rise up against the children of men and against the women, because they have proceeded from them.
Chapter 19 talks about spirits taking on different forms.
Chapter 20 talks about what I think are different life forms and who watches them.
Chapter 22 talks about a place where the dead wait.
Chapter 32 talks about Eden and the tree of wisdom.
Chapter 34 talks about Devices and Portals on or near the Earth.


text:
Camera VS: Huawei P30 Pro against the world
Galaxy S8 coming to Japan next month, Samsung confirms
Himanshu 29 May 2017
According to a new report out of South Korea, Samsung has confirmed that the Galaxy S8 flagship smartphone will be launched in Japan next month. The exact date is currently not known, but the time-frame is said to be early June.
The report also notes that the tech giant will hold a series of promotional events in the Asian country for its flagship smartphones.
The Galaxy S8 and S8+ were launched on April 21, and are already available in several key markets around the world, including the US. Last week, they landed in China as well.
Via 1 2
These are the color options for Samsung Galaxy S8/S8+ in Taiwan
Here's how Samsung customized the Galaxy S8 for the Chinese market
Samsung offering Galaxy S8/S8+ buyers new Gear 360 for just $49
New Samsung Galaxy S8/S8+ update fixes Bluetooth connectivity issues
Tonald Drump
UD%
And Sony just opened pre-orders of the XZ Premium in Korea, Samsung Galaxy's homeland. http://www.gsmarena.com/sony_xperia_xz_premium_arrives__south_korea-news-25332.php
got my s8 today !
yG2
I live in Okinawa as well. For those of you that live in the states, I envy you. We don't get the ultimate bundle for a pre-order. We gotta settle for just a VR headset, lol. It's better than nothing, though. I got my hands on the S8 & S8+ last w...


text:
Shop | Try a Sample | Subscribe to Email | Product Ideas
Main2
Christian Women's Job Corps graduate comes full circle as CWJC site coordinator
By National WMU on August 29, 2018
By Trennis Henderson, WMU National Correspondent
When Margaret Roland talks about the life-changing impact that Christian Women's Job Corps can make, she's speaking from personal experience.
Roland, a CWJC site coordinator in Florence, Ala., previously was a CWJC participant, seeking to gain practical skills to better equip her for life. In her role as a site coordinator, she was among more than 130 women and men who gathered for training and fellowship at Woman's Missionary Union's recent Christian Women's Job Corps/Christian Men's Job Corps National Meeting in Talladega, Ala.
"I grew up in poverty," Roland reflected candidly. "By the time I was 13, my mother kicked me out of the house. That opened up the door to drugs and homelessness. I moved from friends to family. At the same time, I still was able to graduate high school."
Although she made a profession of faith in Christ at age 16, she said she didn't understand the need to change her lifestyle to match her newfound faith. By age 19, she was pregnant and single with little hope for a stable or successful future.
Asking God to give her a reason to quit using drugs, Roland said her pregnancy became that motivation. "God was like, 'Okay, here's your reason to stop.' That's when I quit doing the drugs. I wanted to be a better mother for my child than what I had growing up."
At the same time, Roland said she began visiting area churches as she "started searching for God more on a deeper level." That led to a church member introducing her to Christian Women's Job Corps.
Going through the program twice at the CWJC site in Guntersville, Ala., Roland acknowledged that she "still struggled a little bit." She eventually moved to Florence, got a job at an area hospital and discovered that through her CWJC classes, mentoring and Bible studies, she had "gained the tools that I needed to succeed."
Working at the hospital as a phlebotomist for five years, "I was able to save up enough money to work on my credit to be able to buy a home," Roland explained. "Once I was able to sign the contract on my home is when I decided that I wanted to help other women overcome the same obstacles that I have. That's when God started putting Christian Women's Job Corps on my heart. That was in 2016 and now we are going into our second year of classes."
One of the primary goals of Christian Women's Job Corps and Christian Men's Job Corps is to "equip men and women for life and employment," said Lena Plunk, WMU's ministries consultant for mobilization and national CWJC/CMJC coordinator. "When we see CWJC/CMJC graduates continuing to move forward, we have accomplished this goal.
"When a CWJC/CMJC participant graduates from the program and gives back to the community, it is evidence of the impact the ministry has had in his or her life," she emphasized. "They are able to use what was once seen as a weakness in their life as a strength to empower others."
In Roland's case, Plunk affirmed that "her desire is to serve women who have been in similar places that she has been. Her commitment to achieve that goal is a picture of the continual cycle of change that can happen in the lives of those this ministry serves.
"Her life has been changed and she now wants to share that change with others, in hopes that their lives are also transformed through Christ," Plunk said. "This is a pattern that has the potential of being ongoing and reaching the lives of many other people for years to come."
According to Roland, one of the most inspiring aspects of the program "is seeing what all gets poured into this ministry from the volunteers, the instructors, the mentors, the site coordinator – the work, the tears, the prayers – all of that has impacted me on another level. Having someone believe in me and not giving up on me as a participant has got me to where I am. It has strengthened my relationship with Jesus and just being able to be more successful.
"That same passion that was given to me is now what I want to do for others," she declared. Although she readily admits that "I feel like I'm not qualified to be in this role," she quickly added, "The more I feel that way, the more I see that God does not call the qualified, He qualifies the called. Seeing that I can relate to the participants on a whole different level has given me the ability to keep going."
As a site coordinator, Roland enlists church and community leaders to provide such resources as Bible study, mentoring, job readiness, computer skills and more to benefit participants enrolled in the program.
What is the payoff as she invests her time and energy in women facing some of the same struggles she has overcome? "Seeing lives changed and seeing the ladies have hope," she responded, "knowing that they can do better and knowing there are people out there who want to see them succeed."
Encouraging other individuals and churches to consider hosting Christian Women's Job Corps or Christian Men's Job Corps ministries, she said, "If your heart is in helping others, this is a ministry to get plugged into."
Roland said it's simply a matter of being available "to get out there and give a hand up to someone in need" – just as someone did for her.
Christian Women's Job Corps
CWJC
WMU Blog
WMU:
Children's Leaders Leaders mission friends preschool Mission Stories Girls in Action Preschool Leaders Royal Ambassadors Mission Projects Children's Project Ideas Children in Action refugees myMISSION Mom Blog myMISSION Missionary Blog myMISSION Young Professional Blog myMISSION Collegiate Blog Preschool Devotions myMISSION Leader Blog children Students
Tours & Gift Shop
Christian Women's Leadership Center
WorldCrafts
Baptist Nursing Fellowship
WMU Foundation
Missions Groups/Curriculum
Preschool: Mission Friends
Children: Girls in Action / GA
Royal Ambassadors / RA
Children in Action / CA
Students: Acteens
Adults: myMISSION
Women on Mission
Adults on Mission
ESL/Basic English
Try a Sample
Register Your Group
Curriculum and Products
New Hope - Books and Bible Studies
WorldCrafts - Fair Trade
Christian Job Corps
Pure Water, Pure Love
Missionary Housing
Contact Us Copyright 2018 | Privacy Policy | Customer Service | Consultants | Magazine Subscriptions | Subscribe to Email | Donate | State WMU Offices | Log In


text:
Q: How to get all Errors from ASP.Net MVC modelState? I want to get all the error messages out of the modelState without knowing the key values. Looping through to grab all the error messages that the ModelState contains.
How can I do this?

A: Outputting just the Error messages themselves wasn't sufficient for me, but this did the trick.
var modelQuery = (from kvp in ModelState
                  let field = kvp.Key
                  let state = kvp.Value
                  where state.Errors.Count > 0
                  let val = state.Value?.AttemptedValue ?? "[NULL]"

                  let errors = string.Join(";", state.Errors.Select(err => err.ErrorMessage))
                  select string.Format("{0}:[{1}] (ERRORS: {2})", field, val, errors));

Trace.WriteLine(string.Join(Environment.NewLine, modelQuery));

A: This code snippet is useful too and give you a List that contains of Error Messges.
var errors = ModelState.Values.SelectMany(x => x.Errors.Select(c => c.ErrorMessage)).ToList();

A: Using LINQ:
IEnumerable<ModelError> allErrors = ModelState.Values.SelectMany(v => v.Errors);

A: For just in case someone need it i made and use the following static class in my projects
Usage example:
if (!ModelState.IsValid)
{
    var errors = ModelState.GetModelErrors();
    return Json(new { errors });
}

Usings:
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.Mvc;
using WebGrease.Css.Extensions;

Class:
public static class ModelStateErrorHandler
{
    ///
    /// Returns a Key/Value pair with all the errors in the model
    /// according to the data annotation properties.
    ///
    /// <param name="errDictionary"></param>
    /// <returns>
    /// Key: Name of the property
    /// Value: The error message returned from data annotation
    /// </returns>
    public static Dictionary<string, string> GetModelErrors(this ModelStateDictionary errDictionary)
    {
        var errors = new Dictionary<string, string>();
        errDictionary.Where(k => k.Value.Errors.Count > 0).ForEach(i =>
        {
            var er = string.Join(", ", i.Value.Errors.Select(e => e.ErrorMessage).ToArray());
            errors.Add(i.Key, er);
        });
        return errors;
    }

    public static string StringifyModelErrors(this ModelStateDictionary errDictionary)
    {
        var errorsBuilder = new StringBuilder();
        var errors = errDictionary.GetModelErrors();
        errors.ForEach(key => errorsBuilder.AppendFormat("{0}: {1} -", key.Key,key.Value));
        return errorsBuilder.ToString();
    }
}

A: Anybody looking for asp.net core 3.1. Slightly updated than the above answer. I found that this is what [ApiController] returns
 Dictionary<string, List<string>> errors = new Dictionary<string, List<string>>();

                foreach (KeyValuePair<string, ModelStateEntry> kvp in ViewData.ModelState)
                {
                    string key = kvp.Key;
                    ModelStateEntry entry = kvp.Value;

                    if (entry.Errors.Count > 0)
                    {
                        List<string> errorList = new List<string>();
                        foreach (ModelError error in entry.Errors)
                        {
                            errorList.Add(error.ErrorMessage);
                        }

                        errors[key] = errorList;
                    }
                }

                return  new JsonResult(new {Errors = errors});

A: foreach (ModelState modelState in ViewData.ModelState.Values) {
    foreach (ModelError error in modelState.Errors) {
        DoSomethingWith(error);
    }
}

See also How do I get the collection of Model State Errors in ASP.NET MVC?.

A: And this works too:
var query = from state in ModelState.Values
    from error in state.Errors
    select error.ErrorMessage;
var errors = query.ToArray(); // ToList() and so on...

A: Useful for passing array of error messages to View, perhaps via Json:
messageArray = this.ViewData.ModelState.Values.SelectMany(modelState => modelState.Errors, (modelState, error) => error.ErrorMessage).ToArray();

A: This is expanding upon the answer from @Dunc . See xml doc comments
// ReSharper disable CheckNamespace
using System.Linq;
using System.Web.Mvc;

public static class Debugg
{
    ///
    /// This class is for debugging ModelState errors either in the quick watch
    /// window or the immediate window.
    /// When the model state contains dozens and dozens of properties,
    /// it is impossible to inspect why a model state is invalid.
    /// This method will pull up the errors
    ///
    /// <param name="modelState">modelState</param>
    /// <returns></returns>
    public static ModelError[]  It(ModelStateDictionary modelState)
    {
        var errors = modelState.Values.SelectMany(x => x.Errors).ToArray();
        return errors;
    }
}

A: I was able to do this using a little LINQ,
public static List<string> GetErrorListFromModelState
                                              (ModelStateDictionary modelState)
{
      var query = from state in modelState.Values
                  from error in state.Errors
                  select error.ErrorMessage;

      var errorList = query.ToList();
      return errorList;
}

The above method returns a list of validation errors.
Further Reading :
How to read all errors from ModelState in ASP.NET MVC

A: In addition, ModelState.Values.ErrorMessage may be empty, but ModelState.Values.Exception.Message may indicate an error.

A:

simply use asp-validation-summary Tag Helper

A: For AJAX Request better solution:
    public IActionResult Demo(DemoInfo formData)
    {
        if (!ModelState.IsValid)
        {
            IEnumerable<object> formErrors = ModelState.Select((s) => new {
                fieldName = s.Key,
                fieldValue = s.Value.RawValue,
                fieldMessage = s.Value.Errors.FirstOrDefault()?.ErrorMessage
            });
            return Json(new { formValid = 0, formErrors });
        }
        return Json(new { formValid = 1 });
    }

Response format will be:
{"formValid":0,
 "formErrors":[{
     "fieldName":"name of field from object",
     "fieldValue":"value from browser",
     "fieldMessage":null /*Error message from model annotations if field is valid the value will be null */
 }]
}

For more details about Func<> check this page : Func<TSource,Int32,TResult>)

A: Building on the LINQ verison, if you want to join all the error messages into one string:
string messages = string.Join("; ", ModelState.Values
                                        .SelectMany(x => x.Errors)
                                        .Select(x => x.ErrorMessage));

A: During debugging I find it useful to put a table at the bottom of each of my pages to show all ModelState errors.

    @foreach (var item in ViewContext.ViewData.ModelState)
    {
        if (item.Value.Errors.Any())
        {

            @item.Key
            @((item.Value == null || item.Value.Value == null) ? "<null>" : item.Value.Value.RawValue)
            @(string.Join("; ", item.Value.Errors.Select(x => x.ErrorMessage)))

        }
    }

A: As I discovered having followed the advice in the answers given so far, you can get exceptions occuring without error messages being set, so to catch all problems you really need to get both the ErrorMessage and the Exception.
String messages = String.Join(Environment.NewLine, ModelState.Values.SelectMany(v => v.Errors)
                                                           .Select( v => v.ErrorMessage + " " + v.Exception));

or as an extension method
public static IEnumerable<String> GetErrors(this ModelStateDictionary modelState)
{
      return modelState.Values.SelectMany(v => v.Errors)
                              .Select( v => v.ErrorMessage + " " + v.Exception).ToList();

}

A: In case anyone wants to return the Name of the Model property for binding the error message in a strongly typed view.
List<ErrorResult> Errors = new List<ErrorResult>();
foreach (KeyValuePair<string, ModelState> modelStateDD in ViewData.ModelState)
{
    string key = modelStateDD.Key;
    ModelState modelState = modelStateDD.Value;

    foreach (ModelError error in modelState.Errors)
    {
        ErrorResult er = new ErrorResult();
        er.ErrorMessage = error.ErrorMessage;
        er.Field = key;
        Errors.Add(er);
    }
}

This way you can actually tie the error in with the field that threw the error.

A: var x = new Dictionary<string,string>();
for (var b = 0; b < ViewData.ModelState.Values.Count(); b++)
{
    if (ViewData.ModelState.Values.ElementAt(b).Errors.Count() > 0)
        x.Add(ViewData.ModelState.Keys.ElementAt(b), String.Join(",", ViewData
            .ModelState.Values.ElementAt(b).Errors.Select(c => c.ErrorMessage)));
}

A: get error with Field Name and Error Message
var errors = new List<ErrorDto>();
foreach (KeyValuePair<string, ModelStateEntry> kvp in context.ModelState)
{
    if (kvp.Value.Errors.Count > 0)
    {
        errors.Add(new ErrorDto()
        {
            FieldName = kvp.Key,
            ErrorMessage = string.Join(",", kvp.Value.Errors.Select(v => v.ErrorMessage))
        });
    }
}

Error Model
    public class ErrorDto
    {
        public string FieldName { get; set; }
        public string ErrorMessage { get; set; }
    }

A: In your implementation you are missing static Class, this should be.
if (!ModelState.IsValid)
{
    var errors =  ModelStateErrorHandler.GetModelErrors(this.ModelState);
    return Json(new { errors });
}

rather
if (!ModelState.IsValid)
{
    var errors = ModelState.GetModelErrors();
    return Json(new { errors });
}

A: var result = string.Join(',',ModelState.Values.SelectMany(v => v.Errors).Select(a=>a.ErrorMessage));

redpajama_set_name: RedPajamaStackExchange


Step into the spring with our Sloggers - made in the USA - rain & garden shoes in an adorable, bright, black & purple pansy print. Whether you're working in the garden, running errands around town on a rainy day, or just out walking the Dog in the morning dew, you'll feel comfortable & secure in these fun, waterproof shoes. They included our exclusive "All-Day-Comfort-Insoles", the main reason why Sloggers boots & shoes receive such high comfort praise & our signature "Deep-Lug-Tread" for excellent traction in water & mud. We use a soft, flexible upper material made from odorless, medical grade, 100% recyclable plastic & our soles contain up to 50% recycled material Sizing info: half sizes order up & for a "perfect fit", order our Half-Sizer Cut-To-Fit Insole (style 330BK) to make any Sloggers boot or shoe 1/2 size smaller. Proudly made in the USA from 100% recyclable material & when they are all worn out, return them to us & we'll make them into another shoe. How is that for "reuse & recycle". for more information on our recycling program, please visit our website.


The holidays are over and you've indulged in more foods, drinks and desserts than you normally do. It's OK. I did too. We're human and not robots. You can't go to a Christmas party and not enjoy all the delicious foods and desserts that have been prepared.
If you simply could not control yourself over the holidays and you're ready to make this a healthier year………..here are 7 simple techniques you can do to get yourself back on track. I like to call them the 7 Baby Steps to Health.
One of the keys to not gaining a ton of weight over the holidays or anytime is by being moderate. Yes, I know what you're thinking. Moderate? Are you crazy? I love to eat especially during the holidays!!! Well, I do too, but let me share one technique that works for me. How? By using the taste technique. Notice I said taste….not pig out. I like using this technique much better than counting calories. Who knows how many calories are in all these foods? When it comes to weight loss, counting calories sounds good on paper but in reality it doesn't work for me.
Another technique I find useful and works is what I call the baby plate technique. This is where you serve yourself on small plates. This way you can go back for seconds and you have not consumed a ton of food!
Remember we don't need to eat such large quantities of food to nourish our bodies. Quite the contrary, eating large amounts of food is detrimental to your digestive organs. The pancreas, liver and gallbladder have to work overtime and that's not good.
I know it can be difficult to only get a smaller than normal serving. But getting smaller servings by using small plates allows you to taste everything and not feel like you're deprived without adding excessive calories to your plate.
Another step to better health is to start a walking routine. If you're not that disciplined and won't go walking by yourself get a walking partner. There are other people like you that are hoping to find someone to walk with.
Maybe you're ready to make the commitment to improve your diet. You can start by eliminating sodas from your diet. (By the way, switching to diet sodas is not a healthy option. Those artificial sweeteners can cause anxiety, memory loss, not to mention many other side effects like cancer). Try replacing sodas with vegetable juice. I recycle the small plastic bottles of Propel and fill them 3/4 of the way with V8 add lemon juice and a dash of my spicy seasoning! It's a tasty and nutritious breakfast drink on the drive to work or for lunch with a small salad or salmon burger! The added bonus is you are consuming more of the daily recommended servings of vegetables.
Another technique is to not eat out everyday for lunch. You could limit eating out to 2 or 3 times per week. Just think of the money you'll save as well. Just prepare a simple lunch the night before and brown bag it. Your lunch could even be an apple with some peanut butter. That takes very little preparation.
The important thing is……. get started. Write out your plan(s) on 3×5 index cards. You may want to start with one thing. It could be as simple as writing something like this: 1. I will go walking everyday for 30 minutes. 15 minutes one way and 15 minutes back. Some people use the "I don't have time. Most people get one hour for lunch. Use half the time to go for a short walk. No excuses!
Carry one of your index cards in you vehicle's visor or somewhere where you will see it and read it everyday. Use a magnet to stick one on your refrigerator. Put one next to your bed on your nightstand.
Read your goals several times a day. One of the best ways to form a new habit is by repetition. I've been using this technique successfully for several years now.
Write a new index card every month. By the end of the first month, your initial baby step should be a new healthy habit! Every month add a new goal and within six months……. can you imagine the progress!!!
Remember, the key is small changes over time….baby steps….which will increase your chances of accomplishing and maintaining your goals for a lifetime. If you have any of your own ideas that are working for you on ways to ease into healthy habits, I would love to hear from you.


LOS ANGELES — The Armenian Graduate Student Association of the University of California, Los Angeles (UCLA) will host its 17th Annual Graduate Student Colloquium in Armenian Studies on February 15 from 10 a.m. to 5 p.m. The event will be held at UCLA in Royce Hall 314 and will be followed by a catered reception.
For 17 years, the UCLA Graduate Student Colloquium in Armenian Studies has dedicated itself to encouraging, fostering, and promoting scholarly research among graduate students in the field of Armenian studies around the world.
This year features presentations by 10 young scholars from the United States, France, China and Armenia on a variety of topics centered around the following themes: the role of literature and the press in culture and identity formation; late antique religious art; early modern circulation of art and ideas between Europe and the Near East; and contemporary sociopolitical movements.
"We are delighted to welcome stellar young scholars in the field of Armenian studies and to give them an opportunity to present their cutting-edge research, receive feedback, and network with their peers and the faculty at UCLA. This year, we are also pleased to welcome Dr. Sebouh David Aslanian, who will be our guest speaker at the event," said Jennifer Manoukian, director of the 2019 UCLA Graduate Student Colloquium in Armenian Studies.
Among the speakers will be Dr. S. Peter Cowe, Narekatsi Professor of Armenian Studies, Near Eastern Languages and Cultures, UCLA; Aram Ghoogasian, "The 1862 Zeytun Rebellion and the Armenian Press" (University of Chicago); Deanna Cachoian-Schanz, "Dare (Again) Not to Speak its Name? Translating 'Race' into Early 20th century Western Armenian Feminist Texts" (University of Pennsylvania); Khoren Grigoryan, "The Transformation of Collective Identity after 1915: The Case of Musa Dagh" (Institute of Archaeology and Ethnography, Yerevan); Sipana Tchakerian, "Stone Crosses before Khachkars: Early Christian Four-Sided Stelae from Armenia and Georgia" (Université Paris 1 Panthéon-Sorbonne); Ani Yenokyan, "Illustrations in Armenian Printed Books in the Context of Early Modern Armenian Culture: Printed Woodcuts and Armenian Miniatures" (Matenadaran Institute of Ancient Manuscripts); Sargis Baldaryan, "An Armenian Trade Manual in Circulation: Constant of Julfa, His Compendium and the Dissemination of Information in the Julfan Trade Network" (Yerevan State University); Xi Yang, "How to Measure Sayat Nova's Aesthetic and Poetic Achievement" (Chinese Academy of Social Sciences, Beijing); Armen Adamian, "The Azgagrakan Movement: An Embodied Form of Armenian Nationalism" (UCLA); Stefanie Kundakjian, "Homemakings and Unmakings: Syrian-Armenian Women Integrating in the Homeland" (American University of Paris); Gevorg Petrosyan, "'New Awakening': Gezi Park and the Transformation of Armenian Youth Activism in Turkey" (Institute of Oriental Studies, Yerevan) and Dr. Sebouh Aslanian.
The colloquium is free and open to the public and will be live-streamed on the colloquium's Facebook page (https://bit.ly/2HnVBWu).
More information about the colloquium, including the full program, can be found at the colloquium website (https://nelc.ucla.edu/conference/agsc/) as well as on Facebook (https://bit.ly/2HnVBWu).


Content Studio is a thriving community for freelance content creators.
Content marketing has entered an era of refinement. We believe that every piece of content should be created with a clear mission and direction, and, above all else it needs to add value to the audience's life. We need your help to accomplish that.
We are always searching for freelancers with deep industry expertise to help our clients create unique and valuable content that drives business results. By partnering closely with our content strategists, you'll become an extension of our team in our quest to tell meaningful stories.
Please see NewsCred's company events and check back often for updates.
What types of content formats does NewsCred produce?
Articles (evergreen, topical, SME-driven, ghostwritten, etc.),whitepapers, eBooks, infographics, social graphics, interactive design, photo shoots, videos, event coverage & more.
What level of subject matter expertise is desired, and in what areas?
We produce custom content for Fortune 500 enterprise brands across all the verticals and utilize creators from many different backgrounds. Our biggest vertical priorities include tech, healthcare, financial services, CPG, and others-but the topics we cover go very deep within each of these industries. Don't let the above verticals keep you from submitting your profile.
What Does the process for a typical assignment look like?
Our in-house editors pair creators with customer programs, depending on the customer's needs and the creator's expertise and level of experience. Once a match has been established, creators can expect to receive assignments on an ongoing basis (cadence of assignments varies per project) within our content Marketing Platform and will work with NewsCred editors to align content to the customer's overall business goals.
How will I work with NewsCred editors?
Our editorial team will function as your managing editor for all client work. We'll work with you to ensure the assignment is clear, you have all the information and context you need to submit exceptional wor, and also edit your work per our client's brand guidelines.
We're glad you asked! Our rates are competitive for all types of content projects, and we have a seamless process in place to ensure payments are processed quickly.
Does my geographic location matter?
If location matters, that will be included in the listing. If not, you're good! Our creators are based in every corner of the world and can work on their own schedule, in their own environment, to fulfil deadlines. That being said, we do have unique needs to fulfil at times that do require a specific geographic location-such as event coverage, location-specific translation requests, etc.


What could be better? Feeling a little too much Hate or Anger? Just put it in a jar and put the lid on it. Then open that jar of Love, take two and call me in the morning. One can always open that Anger jar when it becomes necessary and put it to productive use. Say, like when there is a little too much social injustice and one must get motivated to do something about it.
This doctor's advice? Try to open the Joy jar at least once a day.


text:
package org.apache.samza.table.descriptors;

import java.lang.reflect.Constructor;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;

import org.apache.samza.SamzaException;
import org.apache.samza.config.Config;
import org.apache.samza.config.MapConfig;
import org.apache.samza.table.batching.BatchProvider;
import org.apache.samza.table.remote.TablePart;
import org.apache.samza.table.remote.TableRateLimiter;
import org.apache.samza.table.remote.TableReadFunction;
import org.apache.samza.table.remote.TableWriteFunction;
import org.apache.samza.table.retry.TableRetryPolicy;
import org.apache.samza.table.utils.SerdeUtils;
import org.apache.samza.util.RateLimiter;

import com.google.common.base.Preconditions;

/**
 * Table descriptor for remote store backed tables
 *
 * @param <K> the type of the key
 * @param <V> the type of the value
 */
public class RemoteTableDescriptor<K, V> extends BaseTableDescriptor<K, V, RemoteTableDescriptor<K, V>> {

  public static final String PROVIDER_FACTORY_CLASS_NAME = "org.apache.samza.table.remote.RemoteTableProviderFactory";

  public static final String DEFAULT_RATE_LIMITER_CLASS_NAME = "org.apache.samza.util.EmbeddedTaggedRateLimiter";

  /**
   * Tag to be used for provision credits for rate limiting read operations from the remote table.
   * Caller must pre-populate the credits with this tag when specifying a custom rate limiter instance
   * through {@link RemoteTableDescriptor#withRateLimiter(RateLimiter, TableRateLimiter.CreditFunction,
   * TableRateLimiter.CreditFunction)}
   */
  public static final String RL_READ_TAG = "readTag";

  /**
   * Tag to be used for provision credits for rate limiting write operations into the remote table.
   * Caller can optionally populate the credits with this tag when specifying a custom rate limiter instance
   * through {@link RemoteTableDescriptor#withRateLimiter(RateLimiter, TableRateLimiter.CreditFunction,
   * TableRateLimiter.CreditFunction)} and it needs the write functionality.
   */
  public static final String RL_WRITE_TAG = "writeTag";

  public static final String READ_FN = "io.read.func";
  public static final String WRITE_FN = "io.write.func";
  public static final String RATE_LIMITER = "io.ratelimiter";
  //Key name for table api read rate limit
  public static final String READ_CREDITS = "io.read.credits";
  //Key name for table api write rate limit
  public static final String WRITE_CREDITS = "io.write.credits";
  public static final String READ_CREDIT_FN = "io.read.credit.func";
  public static final String WRITE_CREDIT_FN = "io.write.credit.func";
  public static final String ASYNC_CALLBACK_POOL_SIZE = "io.async.callback.pool.size";
  public static final String READ_RETRY_POLICY = "io.read.retry.policy";
  public static final String WRITE_RETRY_POLICY = "io.write.retry.policy";
  public static final String BATCH_PROVIDER = "io.batch.provider";

  // Input support for a specific remote store (optional)
  private TableReadFunction<K, V> readFn;

  // Output support for a specific remote store (optional)
  private TableWriteFunction<K, V> writeFn;

  // Rate limiter for client-side throttling; it is set by withRateLimiter()
  private RateLimiter rateLimiter;

  // Indicate whether read rate limiter is enabled or not
  private boolean enableReadRateLimiter = true;

  // Indicate whether write rate limiter is enabled or not
  private boolean enableWriteRateLimiter = true;

  // Batching support to reduce traffic volume sent to the remote store.
  private BatchProvider<K, V> batchProvider;

  // Rates for constructing the default rate limiter when they are non-zero
  private Map<String, Integer> tagCreditsMap = new HashMap<>();

  private TableRateLimiter.CreditFunction<K, V> readCreditFn;
  private TableRateLimiter.CreditFunction<K, V> writeCreditFn;

  private TableRetryPolicy readRetryPolicy;
  private TableRetryPolicy writeRetryPolicy;

  // By default execute future callbacks on the native client threads
  // ie. no additional thread pool for callbacks.
  private int asyncCallbackPoolSize = -1;

  /**
   * Constructs a table descriptor instance
   * @param tableId Id of the table, it must conform to pattern {@literal [\\d\\w-_]+}
   */
  public RemoteTableDescriptor(String tableId) {
    super(tableId);
  }

  /**
   * Use specified TableReadFunction with remote table and a retry policy.
   * @param readFn read function instance
   * @return this table descriptor instance
   */
  public RemoteTableDescriptor<K, V> withReadFunction(TableReadFunction<K, V> readFn) {
    Preconditions.checkNotNull(readFn, "null read function");
    this.readFn = readFn;
    return this;
  }

  /**
   * Use specified TableWriteFunction with remote table and a retry policy.
   * @param writeFn write function instance
   * @return this table descriptor instance
   */
  public RemoteTableDescriptor<K, V> withWriteFunction(TableWriteFunction<K, V> writeFn) {
    Preconditions.checkNotNull(writeFn, "null write function");
    this.writeFn = writeFn;
    return this;
  }

  /**
   * Use specified {@link TableRetryPolicy} with the {@link TableReadFunction}.
   * @param retryPolicy retry policy for the write function
   * @return this table descriptor instance
   */
  public RemoteTableDescriptor<K, V> withReadRetryPolicy(TableRetryPolicy retryPolicy) {
    Preconditions.checkNotNull(readFn, "null read function");
    Preconditions.checkNotNull(retryPolicy, "null retry policy");
    this.readRetryPolicy = retryPolicy;
    return this;
  }

  /**
   * Use specified {@link TableRetryPolicy} with the {@link TableWriteFunction}.
   * @param retryPolicy retry policy for the write function
   * @return this table descriptor instance
   */
  public RemoteTableDescriptor<K, V> withWriteRetryPolicy(TableRetryPolicy retryPolicy) {
    Preconditions.checkNotNull(writeFn, "null write function");
    Preconditions.checkNotNull(retryPolicy, "null retry policy");
    this.writeRetryPolicy = retryPolicy;
    return this;
  }

  /**
   * Specify a rate limiter along with credit functions to map a table record (as KV) to the amount
   * of credits to be charged from the rate limiter for table read and write operations.
   * This is an advanced API that provides greater flexibility to throttle each record in the table
   * with different number of credits. For most common use-cases eg: limit the number of read/write
   * operations, please instead use the {@link RemoteTableDescriptor#withReadRateLimit(int)} and
   * {@link RemoteTableDescriptor#withWriteRateLimit(int)}.
   *
   * @param rateLimiter rate limiter instance to be used for throttling
   * @param readCreditFn credit function for rate limiting read operations
   * @param writeCreditFn credit function for rate limiting write operations
   * @return this table descriptor instance
   */
  public RemoteTableDescriptor<K, V> withRateLimiter(RateLimiter rateLimiter,
      TableRateLimiter.CreditFunction<K, V> readCreditFn,
      TableRateLimiter.CreditFunction<K, V> writeCreditFn) {
    Preconditions.checkNotNull(rateLimiter, "null read rate limiter");
    this.rateLimiter = rateLimiter;
    this.readCreditFn = readCreditFn;
    this.writeCreditFn = writeCreditFn;
    return this;
  }

  /**
   * Disable both read and write rate limiter. If the read rate limiter is enabled, the user must provide a rate limiter
   * by calling {@link #withRateLimiter(RateLimiter, TableRateLimiter.CreditFunction, TableRateLimiter.CreditFunction)}
   * or {@link #withReadRateLimit(int)}. If the write rate limiter is enabled, the user must provide a rate limiter
   * by calling {@link #withRateLimiter(RateLimiter, TableRateLimiter.CreditFunction, TableRateLimiter.CreditFunction)}
   * or {@link #withWriteRateLimit(int)}. By default, both read and write rate limiters are enabled.
   *
   * @return this table descriptor instance.
   */
  public RemoteTableDescriptor<K, V> withRateLimiterDisabled() {
    withReadRateLimiterDisabled();
    withWriteRateLimiterDisabled();
    return this;
  }

  /**
   * Disable the read rate limiter.
   *
   * @return this table descriptor instance.
   */
  public RemoteTableDescriptor<K, V> withReadRateLimiterDisabled() {
    this.enableReadRateLimiter = false;
    return this;
  }

  /**
   * Disable the write rate limiter.
   *
   * @return this table descriptor instance.
   */
  public RemoteTableDescriptor<K, V> withWriteRateLimiterDisabled() {
    this.enableWriteRateLimiter = false;
    return this;
  }

  /**
   * Specify the rate limit for table read operations. If the read rate limit is set with this method
   * it is invalid to call {@link RemoteTableDescriptor#withRateLimiter(RateLimiter,
   * TableRateLimiter.CreditFunction, TableRateLimiter.CreditFunction)}
   * and vice versa.
   * Note that this is the total credit of rate limit for the entire job, each task will get a per task
   * credit of creditsPerSec/tasksCount. Hence creditsPerSec should be greater than total number of tasks.
   * @param creditsPerSec rate limit for read operations; must be positive and greater than total number tasks
   * @return this table descriptor instance
   */
  public RemoteTableDescriptor<K, V> withReadRateLimit(int creditsPerSec) {
    Preconditions.checkArgument(creditsPerSec > 0, "Max read rate must be a positive number.");
    tagCreditsMap.put(RL_READ_TAG, creditsPerSec);
    return this;
  }

  /**
   * Specify the rate limit for table write operations. If the write rate limit is set with this method
   * it is invalid to call {@link RemoteTableDescriptor#withRateLimiter(RateLimiter,
   * TableRateLimiter.CreditFunction, TableRateLimiter.CreditFunction)}
   * and vice versa.
   * Note that this is the total credit of rate limit for the entire job, each task will get a per task
   * credit of creditsPerSec/tasksCount. Hence creditsPerSec should be greater than total number of tasks.
   * @param creditsPerSec rate limit for write operations; must be positive and greater than total number tasks
   * @return this table descriptor instance
   */
  public RemoteTableDescriptor<K, V> withWriteRateLimit(int creditsPerSec) {
    Preconditions.checkArgument(creditsPerSec > 0, "Max write rate must be a positive number.");
    tagCreditsMap.put(RL_WRITE_TAG, creditsPerSec);
    return this;
  }

  /**
   * Specify the size of the thread pool for the executor used to execute
   * callbacks of CompletableFutures of async Table operations. By default, these
   * futures are completed (called) by the threads of the native store client. Depending
   * on the implementation of the native client, it may or may not allow executing long
   * running operations in the callbacks. This config can be used to execute the callbacks
   * from a separate executor to decouple from the native client. If configured, this
   * thread pool is shared by all read and write operations.
   * @param poolSize max number of threads in the executor for async callbacks
   * @return this table descriptor instance
   */
  public RemoteTableDescriptor<K, V> withAsyncCallbackExecutorPoolSize(int poolSize) {
    this.asyncCallbackPoolSize = poolSize;
    return this;
  }

  public RemoteTableDescriptor<K, V> withBatchProvider(BatchProvider<K, V> batchProvider) {
    this.batchProvider = batchProvider;
    return this;
  }

  @Override
  public String getProviderFactoryClassName() {
    return PROVIDER_FACTORY_CLASS_NAME;
  }

  @Override
  public Map<String, String> toConfig(Config jobConfig) {

    Map<String, String> tableConfig = new HashMap<>(super.toConfig(jobConfig));

    writeRateLimiterConfig(jobConfig, tableConfig);

    // Handle readCredit functions
    if (readCreditFn != null) {
      addTableConfig(READ_CREDIT_FN, SerdeUtils.serialize("read credit function", readCreditFn), tableConfig);
      addTablePartConfig(READ_CREDIT_FN, readCreditFn, jobConfig, tableConfig);
    }

    // Handle writeCredit functions
    if (writeCreditFn != null) {
      addTableConfig(WRITE_CREDIT_FN, SerdeUtils.serialize("write credit function", writeCreditFn), tableConfig);
      addTablePartConfig(WRITE_CREDIT_FN, writeCreditFn, jobConfig, tableConfig);
    }

    // Handle read retry policy
    if (readRetryPolicy != null) {
      addTableConfig(READ_RETRY_POLICY, SerdeUtils.serialize("read retry policy", readRetryPolicy), tableConfig);
      addTablePartConfig(READ_RETRY_POLICY, readRetryPolicy, jobConfig, tableConfig);
    }

    // Handle write retry policy
    if (writeRetryPolicy != null) {
      addTableConfig(WRITE_RETRY_POLICY, SerdeUtils.serialize("write retry policy", writeRetryPolicy), tableConfig);
      addTablePartConfig(WRITE_RETRY_POLICY, writeRetryPolicy, jobConfig, tableConfig);
    }

    addTableConfig(ASYNC_CALLBACK_POOL_SIZE, String.valueOf(asyncCallbackPoolSize), tableConfig);

    // Handle table reader function
    if (readFn != null) {
      addTableConfig(READ_FN, SerdeUtils.serialize("read function", readFn), tableConfig);
      addTablePartConfig(READ_FN, readFn, jobConfig, tableConfig);
    }

    // Handle table write function
    if (writeFn != null) {
      addTableConfig(WRITE_FN, SerdeUtils.serialize("write function", writeFn), tableConfig);
      addTablePartConfig(WRITE_FN, writeFn, jobConfig, tableConfig);
    }

    if (batchProvider != null) {
      addTableConfig(BATCH_PROVIDER, SerdeUtils.serialize("batch provider", batchProvider), tableConfig);
      addTablePartConfig(BATCH_PROVIDER, batchProvider, jobConfig, tableConfig);
    }
    return Collections.unmodifiableMap(tableConfig);
  }

  // Handle rate limiter
  private void writeRateLimiterConfig(Config jobConfig, Map<String, String> tableConfig) {
    if (!tagCreditsMap.isEmpty()) {
      RateLimiter defaultRateLimiter;
      try {
        @SuppressWarnings("unchecked")
        Class<? extends RateLimiter> clazz = (Class<? extends RateLimiter>) Class.forName(DEFAULT_RATE_LIMITER_CLASS_NAME);
        Constructor<? extends RateLimiter> ctor = clazz.getConstructor(Map.class);
        defaultRateLimiter = ctor.newInstance(tagCreditsMap);
      } catch (Exception ex) {
        throw new SamzaException("Failed to create default rate limiter", ex);
      }
      addTableConfig(RATE_LIMITER, SerdeUtils.serialize("rate limiter", defaultRateLimiter), tableConfig);
      if (defaultRateLimiter instanceof TablePart) {
        addTablePartConfig(RATE_LIMITER, (TablePart) defaultRateLimiter, jobConfig, tableConfig);
      }
    } else if (rateLimiter != null) {
      addTableConfig(RATE_LIMITER, SerdeUtils.serialize("rate limiter", rateLimiter), tableConfig);
      if (rateLimiter instanceof TablePart) {
        addTablePartConfig(RATE_LIMITER, (TablePart) rateLimiter, jobConfig, tableConfig);
      }
    }
    //Write table api read/write rate limit
    if (this.enableReadRateLimiter && tagCreditsMap.containsKey(RL_READ_TAG)) {
      addTableConfig(READ_CREDITS, String.valueOf(tagCreditsMap.get(RL_READ_TAG)), tableConfig);
    }
    if (this.enableWriteRateLimiter && tagCreditsMap.containsKey(RL_WRITE_TAG)) {
      addTableConfig(WRITE_CREDITS, String.valueOf(tagCreditsMap.get(RL_WRITE_TAG)), tableConfig);
    }
  }

  @Override
  protected void validate() {
    Preconditions.checkArgument(writeFn != null || readFn != null,
        "Must have one of TableReadFunction or TableWriteFunction");
    Preconditions.checkArgument(rateLimiter == null || tagCreditsMap.isEmpty(),
        "Only one of rateLimiter instance or read/write limits can be specified");
    // Assume callback executor pool should have no more than 20 threads
    Preconditions.checkArgument(asyncCallbackPoolSize <= 20,
        "too many threads for async callback executor.");

    if (readFn != null && enableReadRateLimiter) {
      Preconditions.checkArgument(readCreditFn != null || tagCreditsMap.containsKey(RL_READ_TAG),
          "Read rate limiter is enabled, there is no read rate limiter configured.");
    }

    if (writeFn != null && enableWriteRateLimiter) {
      Preconditions.checkArgument(writeCreditFn != null || tagCreditsMap.containsKey(RL_WRITE_TAG),
          "Write rate limiter is enabled, there is no write rate limiter configured.");
    }
  }

  /**
   * Helper method to add table part config items to table configuration
   * @param tablePartKey key of the table part
   * @param tablePart table part
   * @param jobConfig job configuration
   * @param tableConfig table configuration
   */
  protected void addTablePartConfig(String tablePartKey, TablePart tablePart, Config jobConfig,
      Map<String, String> tableConfig) {
    tablePart.toConfig(jobConfig, new MapConfig(tableConfig))
        .forEach((k, v) -> addTableConfig(String.format("%s.%s", tablePartKey, k), v, tableConfig));
  }
}

redpajama_set_name: RedPajamaGithub


Showing 100 of 694 comments. Show all.
Cheryl Prax, is anyone responding to the UK training program to mount a protest. This seems like an opportune time to protest for it will convey to attendees of the training session a message that they will otherwise not get.
So sorry about what happened to you. Your story, streetphotobeing, raises an important point. How can a person possibly give consent for ECT when they are so zoned out on drugs that they little or not idea what they are consenting to?
Steve, thanks so much for your help.
We would not for a second let them abduct Connie–and they would be in major trouble if they tried. Would I recommend that someone try an action like this from "within an institution". No of course not. That is a very different set of circumstances. Please note, by the same token, there was no attempt to abduct anyone at all in the MindFreedom Hunger Strike.
I sent it in a few hours ago, Steve As soon as it goes up, I will send a link. Thanks Steve.
No, Truth, that's not what is going to happen. It takes a lot more than this to make them retract. And that's why we need to keep exposing and keep the pressure up.
Incidentally, folk, I am going to be posted a slightly edited version of this article on Rabble.ca on Monday or Tuesday. I tend to be either totally ignored or attacked when I post anything that smells of antipsychiatry on Rabble, for the Rabble readers tends to be incredibly pro-psychiatry. So if anyone has the time and the inclination and to check out the comments posted on Rabble and then put in your "two cents" your input would be greatly appreciated. A lot of the Rabble readers live in Toronto and it would be great if a few of them considered supporting this hunger strike.
Bramble, what happened is that once it was determined that case that damage was done was a viable case, the defendants (the ECT manufactured) immediately offered the plaintiffs a monetary settlement, more or less to keep a ruling against them off the books. The defendants accepted the offer of compensation. and so the case went no further. Yes, the industry will continue to spread the same old line, but what happened in that courtroom is now ammunition that we can use against them. And use it against them, we must. The onus is on us to point out exactly what happened here.
I agree, CGGreen that ECT is barbaric. I would be worried for your friend too. Generally, people who have taken ECT are a fan of it, come to dramatically change their mind in a few years.
For sure, that would be a totally unsafe thing to do on a ward. And part of acquiring what I refer to as "sane literacy" is knowing that people's political resistance is typically interpreted by "mental health authorities" as "symptoms" of one "disorder" or another and a reason to intrude.
The 2003 hunger strike was actually largely organized by Mickey Weinberg, and he did a terrific job.
Terrific, Rosalie. Incidentally, with health being mainly a provincial issue, it is each of the provincial legislators (far more than the federal) whose weighing in could have an effect.
Oldhead, the claim about the 2003 hunger strike generating more positive publicity for us than anything else has is 'Frank's" claim, but I would have to say that I do agree with him. While I don't have time to search for links, you might be able to find them by doing a google search for that hunger strike. Alternatively by visiting the MindFreedom site and seeing if they have posted any of the articles. That said, I do remember at the time that there were quite a number of articles written about the strike during the course of the strike, and every one I came upon was positive. So I am inclined to believe that Frank is correct about this.
Thanks, as always for the support, Frank. I too hope this action spreads.
Not to worry, Oldhead, besides that this was Connie's idea and passion, and choice, this is very much a "controlled" hunger strike. And we will be checking with Connie throughout the few days she is intending to strike (for it will be a "limited strike"), whether she wants to continue or not. Thanks for the encouragement and the endorsement.
Terrific, madmom. Welcome to the action!
I am against hate speech as well (e.g., the diatribes against Jews, Blacks, and people deemed "mentally ill") But I hardly buy into this neurological argument in any way.
Terrific article, Bob. And much thanks for penning it. That said, I cannot say that this development surprises me. What confuses me rather is that anyone is actually surprised by it.
Then the thing to do, Oldhead, is don't post stuff confronting Richard out there in responses to MIA blogs that puts the rest of us who were privy to these old exchanges in a double bind.
I have no difficulty figuring out what either of you mean. It's more than I think you already know from a long history of trying to come to terms with the differences between you and Richard exactly what Richard means and so I don't know why you keep putting the question out to him. And I just felt the need to say that.
Oldhead, my sense is that deep down, you know some of the conundrums that Richard has over identity politics. I have seen you in discussions with him over the formation of an antipscychiatry organization when you argued for less rights for people in the organization if they were not psychiatric survivors, and Richard was uneasy with that. That surely is a type of identity politics that goes beyond the prioritizing of the goals of a specific movement–and that is an example of the type of identity politics that not everyone is happy with. I am somewhat at a loss for understanding why you keep pushing Richard for a definition when the disagreements between the two of you have come up often and have been pretty clear. Beyond that, many people, though especially Richard, have been clear that they would prefer to be part of an antipsychiatry organization where things like class analysis, gender analysis, etc. has a role to play. I am somewhat between the two of you on some of these issues; nonetheless I very much get Richard's concerns.
I don't define identity politics in a way that makes large issues and other struggles unimportant. That, I see as identity politics at its worst and identity politics does not have to work that way (though, I suspect it is what Richard thinks of when he thinks of identify politics). Rather I define identity politics as organizing based on a common identity. I see room for that. I likewise see room for more broad based coalitions of people. Annd when it comes to antipsychiatry per se, I think that broad based coalitions are the only way to go.
Ah, but Alex, let me suggest that there is a very strong chance that one of the people WAS lying. things are hardly equal here.
Personally, I see identity politics as critical (hence the importance of women only groups, of Black groups, of psychiatric survivor groups and other such identity based liberation groups). What the philosopher Jean-Paul Satre called "Us-it" formations or Liberation struggles are legitimate and by nature are identity based. I also think coalition politics are essential, where different types of groups work together. That said, I likewise value and am a part of groups that are simply not identity-based, that are based simply on common analysis, common principles, common committments. All of these have value. And while I may be wrong here, I don't think that Richard would disagree with this. What he disagrees with, if I am reading him right, is the priority given to identity politics. That is, the sense that in the final analysis being from the same oppressed identity should be the sine qua non of political movements. As for myself, I see psychiatric survivor groups as necessarily identity politics based and antipsychiatry groups as necessarily not identity politics based. Can these morph into each other? they can–but the strengths are different and so care needs to be taken here. Two different groups that formed to combated fascism when it began asserting itself in the in the late 1980s are instructive here. One , which was definitely identity based (and I belonged to it) was Jewish Feminist Antifascist League). To belong to the group, you had to be a Jewish woman. The other was AntiRacst Action or ARA (with whom I often worked but to which I did not belong) and it was not identity based. You didn't have to have any particular identity to be a member of ARA; you just had to share the analysis and the committment. Nor were there different classes of membership. Nor was there any sense that if you did not come from a racialized identity, you were to have less of a say–for again, the group was not identity-based, though of course, everyone recognized the importance of checking in with the people's whose oppressions were relevant. Both ARA and JFAFL (Jewish Feminist Antifascist League) had jobs to do. And both got along enormously well together and indeed often worked together. Fortunately, this was a time during history when a great many of us saw the value of different types of politics. It followed a time in the early 1980 when identity politics seemed to overshadow everything else, my own sense is to the detriment of social justice causes.
A few comments here that may or may not be helpful to others in this conversation. For the most part (and there surely were moments that were different), I saw the US psychiatric survivor moment in the 1980s and 1990's as not exactly antipsychiatry–though there is no question that now and then antipsychiatry entered into its principles. By contrast, I saw a very real antipsychiatry movement during this same period in Canada , and this was not a movement based on being a psychiatric survivor, though psychiatric survivors were always central to it. Re the left, what I see in North America right now is a left wing that is overwhelmingly, though thankfully not exclusively, pro-psychiatry (and yes I think even more so than the right is) By contrast, there are countries like Germany, for example, where the left is strongly antipsychiatry. (And we see signs of this in Chile too). My own sense is that we have to stop looking at what happens or has happened in the US as normative and instead come to understandings and to possible models and ways forward by thinking globally.
Re the disagreement between Oldhead and Richard, I don't know if this is helpful, but let me just say that in Canada we tend to draw a distinction between the antipsychiatry movement and the psychiatric survivor movement (which we see as overlapping but not identifical) and as a result seldom get into these types of arguments.
As for my own politics, is is not identical to anyone else's here, though it bears some resemblance to both Richard and Oldhead. I am a leftwing anarchist who sees the importance of a class analysis. At the same time, I have always worked with people across the political spectrum. Also for me, it depends on how sophisticated the right wing analysis is. For example, though my valued friend and ally Dr. Peter Breggin is right wing and I am left wing, we work well and often together for we value what each other brings to the table and because Peter's right wing politics includes and does not stop him from taking in the reality of oppression. Politics is very complicated when you touch into the antipsychiatry area or even the critical psychiatry area–and this, I have long appreciated.
And thank you also, Oldhead for all your work here.
Much thanks for this comment, Rachel.
You wrote the following "Bonnie's so called early life is linked to Don Weitz rather than her own success. In current time period, she is linked to scientology," This part is YOUR saying it and it is totally problematic. Don and I have both had successes from early on. And while linked to Don, I have at no time being associated with scientology–and it is after that that you go on to make reference to the things the Houghton Post says. This is the kind of thing that shouldn't be happening in Mad in America. And no amount of rationalizing makes it okay.
Incidentally, if anyone is interested in other things I am doing in the Indigenous area that tries to establish links with antipsychiatry, I have created and am running a mini-conference at OISE/UT this Friday called "PsychOut Extended: The Psychiatrization of Indigenous People as a Continuation of Genocide." We are expecting hundreds to turn up and it may help spark an important conversation about psychiatry in the Indigenous community. The keynote speaker, incidentally is Dr. Roland Chrisjohn–an Indigenous scholar, a Marxist, and while on a very different place on the left-right spectrum–an old time ally and friend of Thomas Szasz.
But I AM linked with Don Weitz. I am NOT linked to Scientology. Moreover, you insinuated that my being linked with Don somehow nullified the things which I have done. All of this, I find offensive.
The fact that I am slandered in the Houghton Post (as was Peter Breggin) is no reason to slander me here. It is not acceptable. I have absolutely no connection with Scientology and never have had. Other in other venues slander antipsychiatry activists as well as critical theorists by stating such connections in the hope to discredit their message I expect more from a Mad in America venue. Also when it comes to early work, I should be out, that yes, I worked in the 1980s with Don Weitz on the Phoenix Rising Collecive and in the 1980's Don was in Ontario Coalition to Stop Electroshock, of which I was the co-chair along with shock survivor Shirley Johnson. Exactly what any of this is a bad things is an utter mystery to me. We all of us wrote articles against psychiatry. We all of us mounted active opposition to electroshock.
Disagreement with positions is one thing. And I have no problem with that. I do have a problem with slander and slanderous innuendo. The fact that Scientology praised the Scholarship has absolutely whatever nothing to do with me. They praise everything antipsychiatry and even most stuff that is critical psychiatry.
Peter Breggin stop writinging for Houghton Post because of the appalling inaccurate things said about him. By contrast, we expect to be safe writing in Mad in America.
I have many many projects going on. They all have different emphasis. That is not called exclusion. That is just the nature of activism.
Someone in this exchange made the totally erroneous claim that I am linked to Scientology. I need to pout out that is both wrong and slanderous, I have never had any dealing whatever with Scientology. How horrible for anyone to be expressing wrongful slurs like this in Mad in America!
Even on purely pragmatic level–and I have other reasons besides pragmatism here–we need allies to get rid of psychiatry. And you don't get allies unless you care and show in your actions that you care about other oppressions besides that one with which you are most concerned.
leave one oppression in tact, it will serve to reinvent the others. Attack one oppression without looking at how you are impact or not impacting other oppressions in my opinion is sadly misguided.
Progress toward getting rid of injustice and inequality.
Let me suggest that you are suggesting would be the end of coalition politics, and without that, there would be little progress at all.
Yes, this is the group that we all of us need to prioritize.
Concerned carer: What you are saying would be a bit like saying we need slavery so that we can have the critiques of slavery. I have used an extreme example, so as to point out the flaw in this kind of thinking. We absolutely only need to have critical psychiatrists and researcher because we have psychiatry. Would we still need other critical researchers. Of course, but that is a very different question.
Roughly, I would categorize it as "lite ECT". Do i think it is okay? I surely do not. I very much object to it.
We haven't been making strides on ECT in the public vnue . We are planning a much more ambitious series of actions in Toronto in Toronto 2019, including a hunger strike. The issue is winning back the media on the issue. And this new action is promising.
The answer to your question about applying is further up in the comment section.
Thanks, Eric. It took a lot of work, but yes, my sense is that has been time very well spent.
We are definitely making strides here.
Healey's support of ECT is horrific as is all other professionals' support of ECT.
Yes, that is exactly what I think. And that constitutes poetic justice.
I have a thesis support group for my masters and doctoral thesis students. About half my thesis students do thesea in the anti or critical psychiatry area. And they are among the brightest students at the institute, with fellow students in fact to a large degree looking up to them.
I incorporate antipsychiatry into every single course I teach. I integrate it just as one integrates issues of sexism and racism. That said, perhaps the courses where it has most impact is a counterhegemonic course that I teach on trauma, also a course on activism in alliance with disenfranchized populations.
thanks, Steve. And yes, they do seem to be rather terrified. Which tells me that one some level, we are doing our job well.
All good ideas, Julie, but far beyond what I am capable of pulling off in what is left in my life. Possible ideas for younger faculty somewhere to entertain.
For sure, making universities easier place for psych survivors to attend is critical. A good place to begin is getting rid of "mandatory leave" which plagues psych survivors in half the the universities around the world.
Much thanks, madmom. When I started out on this mission, I was told not to bother, that Big Pharma, which contributes billions to the universities would stop this. As you could see, much as they might of wanted to, that is not how this story played out.
Much thanks, Fred. Yes, to pull this off, my determination and focus was unrelenting. Keeping focused, strategic keeping our eye on the ball, that's what we need to do. And when we do that and we do it long and skillfully, the victories will come.
Thanks for your comment, Fried. And thank for all your work over the years.
Of course. But it was doing that anyway. this for the time being we cannot stop, but we can get in there ourselves.
Our anti-shock demo this year one day before Mother's Day will be a stellar. While I won't be letting the cat out of the bag just yet, our anti-shock protest the following year in May of 2019 will be absolutely astounding and will garner press far and wide. Stay tuned!
An interesting idea for a work of fiction. Good luck with it.
Rachel777: The acronym is Centre for Addictions and Mental Health. What do they get from it? It is an industry, centred on pseudo-researcj,and what they get is more more research money.
A good reminder, Julie. Meanwhile, a question, Julie. what do you yourself think of the novel itself? And do you have a response to Jim's review?
I agree with you. We surely do need more media coverage that is solidly questing the part line.
A heads up re The Other Mrs. Smith and the role that it can play, Right now in cities around the world (e.g., Cork, Ireland, Toronto, Canada, Montreal Canada), people are gearing up for annual feminist demonstration against electroshock, held on May 12 (e.g, in many parts of the world, the day before Mother's Day) In Canada, in light of the sexist as well as ageist facts about ECT, the event has long been called "Stop Shocking Our Mothers and Grandmothers". This year in Ontario and perhaps also Quebec , the primary chant at the demos will be "We are the Other Mrs. Smith! Stop Shock [email protected] It is our hope that the media will ask us about this and thereby reinforce the synergy that we are trying to create. If you are at any demonstration in the days leading up to Mother's Day, do join us in the chant.
All excellent points, Au Valencia. To reinforce some of them, in speaking about the autistic movement, we are speaking about a movement–and movements take stands. And not for a second have I ever seen advocates take the stand that they are a separatist movement. And While obviously not the same as antipsychiatry, the overlaps between the autistic movement and the antipsychiatry movement are enormous. Personally, I am grateful to advocates like Nick Walker for recognizing this and asserting connections. Additionally, there is absolutely nothing in the original article that gives anyone reason to be believe that we are dealing with a "disorder". Note the huge growth in the number of people diagnosed as on the autistic spectrum (which was given as evidence) can be understood in ways not unlike the huge growth of the number of people diagnosed as mentally ill–the point is that we have industries here in whose interest this growth lies and we have no pressing reason to attribute that growth to anything other than that. Correspondingly, if I might add a new point, while again of course there are differences–admittedly huge differences–in the antipsychiatry/critical psychiatry movment, we face similar objections from some quarters that some people (e.g., those labeled schizophrenic) actually have a disorder. However, behind this claim lays no facts. In neither case, I would add, would anyone for a second say that the people in question are not suffering and proferring help is not in order.
Now I totally empathize with someone who feels that they are being silenced or their personal experiences are being ignored. ANd while it is hardly for me to say, maybe this the question that the community needs to grapple with. At the same time, one's experience is about experience. And that is a very different matter than "causation" and by the same token, a very different matter than whether or not something is a disease. For interpretations like this are not intrinsically part of "experience".
As an outsider here, that is, as someone who is not autistic, there may of course be important considerations that I am not understanding. ANd if so, please enlighten me.
That said, for sure psychiatry was absolute horrific under Communist regimes. The capitalistic financialization and moneyed interest that we see today, however, make this in some way a whole new ball game–more formidable and deadly that ever.
CAPA and several other organizations in Canada will be demonstrating againt ECT the day before Mother's Day as we have for decades. This year one of our chants will be "We are the other Mrs. Smith! Stop shock now!
I will always fight for you. Doing otherwise is unthinkable.
I am not in psychiatry and I have never worked as a psychiatrist. I am not a MD.
thank you so much, Richard. So wonderful to have a comrade like you.
And thank God, you did, Stephen. We are the better for having you here.
Indeed, thank God you survived!
Thanks for the good wishes, Fred.
Here is a point that I need to make which reaffirms my point about actually doing something.I asked that people in Coalition Against Psychiatric Assault to consider granting me a birthday wish to talk to at least one person that day on why shock should be abolished. Ten people wrote to me to say that they had done just that. I made similar request in this string on MIA. I got no response to it. Now I do get the difference. This is not an activist group. It is a website. At the same time, I am worried about how far we can get when we are largely restricted to talking and people rarely pick anything up and up.
Hey people, any ideas here?
All going on at the same time, law suits, various works of art, especially theatre of the oppressed, the leads the audience to act, spirited demos that bring in allies from other movements, law suit, consciousness-raising events, lobbying legislatures. What it would mean to organize together is to know what others are doing and actively promote it and otherwise consciousness-raise around it. The problem is not knowing what has to be done. The problem is people taking it as a priority and making a point of following through and actually acting.
A belated happy birthday, Julie. Just to be clear, I am always happy to wish you a happy birthday for we can celebrate at any time the day that you were born. And like everyone who cares about justice, you are a blessing to the world.
Hey there, allies. It is my 73 birthday today. For anyone so inclined–and of course, no one has to be–here is the best present that anyone could give me. Talk to two people today who are not one of the Mad in America devotees about why it is critical to abolish shock. Why I say not one of Mad i America devotees is that that is too easy and won't get us very far. We really do have to go beyond the "usual suspects" and talk to folk other than those who are already converted.
Fred, your simile seems very apt.


Please excuse my ignorance but when starting out a self employed photographer in 2009 I was rather green to say the least.
My issue is this. I was commissioned to shoot food photography by a design agency who were creating a website and delivering the content for a high end Michelin restaurant in London. I produced and supplied the imagery over many shoots within the first 2 years (say 2009 - 2011). My client (The design agency) was invoiced by me for the commissions. I did not state any usage terms on my invoice, nor did i supply a separate licence.
6 years on and the restaurant are still using all my images on 2 restaurant websites and weekly news emailers.
I do not work with the agency anymore, and the restaurant use someone else for the photography also.
I contacted the restaurant owner to politely explain that although they have had several years of free use of the images since initial commission, if they wanted to carry on using my images going forwards they would have to agree new licence terms or cease using them.
They have advised that they feel they can continue using the images with no additional costs as nothing was stated at the time of invoice, and the images were also supplied via the design agency?
Since there was no licence accompanying the initial delivery of your photographs to the agency as per the commission, a court would try to discern what the parties meant to happen in the context of normal conventions which prevailed in that sector at that time. So for example it can immediately be implied from your acceptance of the commission that you were licensing the agency to use the images, and by extension if you did the shoot in the restaurant or using dishes prepared by them, it can be assumed that you knew the ultimate end user of the images. From these basic assumptions it is hard to say what other terms might be implied, for instance about how the images might be used (press advertising, fliers, promotions, supplied free to illustrate review articles etc) or the term of the licence, as this would really depend on what you were told at the time. Did the agency put the commission in writing, either at the brief stage or during the shoot stage prior to delivery of the images for approval? If so there may be something there from which the possible term of the licence can be implied. But in the absence of anything like that I think a court might well conclude that you and the agency intended the licence to last for as long as the restaurant need the images for - in other words the position which the restaurant is taking at the moment - otherwise a lesser term would have been expressly stipulated.
Another factor which may point towards the expanse of the intended licence could be the amount you were paid for the job and how that relates to the industry rates which applied at the time. So say the 'standard' going rate for the job can be shown to be £300 to include a licence allowing multiple media and an indeterminate period, but you were only paid £150, a court might be persuaded that the lower amount reflected a more restricted licence. We have to assume that the quality of your work was not an issue because the agency accepted the work and the restaurant seems happy to still use the images after 6 years. But that argument would be somewhat hard to support if the agency could show that you accepted other jobs for similar money but where the licence was demonstrably more extensive.
And the other thing to note is that this is a contractual issue between you and the agency and not between you and the restaurant. If you tried to sue the restaurant it could only be for copyright infringement and not breach of contract, and I think they would have a strong case for saying that they believed in good faith that there was an open ended licence which attached to the deal they had with the agency. That would tend to conform to standard business practice for this sort of thing. Indeed if the agency had been operating for some time and weren't as inexperienced as you were at the time, they may well have provided the restaurant with written terms and conditions which covered aspects such as this. And assuming that the court accepted the restaurant's argument, whilst also agreeing with you that the licence had ended, the restaurant would not be liable for infringement since they were not primary infringers, but instead were acting on a false authority provided to them by the agency, meaning that they had no reason to believe the images were infringing copies (see section 23 of the Copyright Designs and Patents Act 1988).
On balance I think you may need to walk away and chalk this up to experience. From a strictly business point of view it may not be worth your while to pursue it, given that you would probably need some proper legal advice and representation in court if you went down that route - expenses which you cannot reclaim even if you win, assuming this went to the small claims track of the IPEC, and as you say, the court would only consider damages which cover the period after the implied licence might be found to have ended.
License to Use is limited to Twelve Months (1 Year) unless a longer term	has been negotiated and agreed upon in writing by the	Photographer. When the License to Use has expired the Photographs must be returned to the	Photographer in	good	condition within 30 days and any	archived digital files	destroyed.
Images are supplied under Licence in accordance with our Terms and Conditions of Business, available on our website simon harvey photography dot com. All Imagery supplied is the Copyright of Simon Harvey Photography Ltd.
I recommend also putting your full terms and conditions on the backside of any estimates, invoices and licences which you send out as that keeps the two things together (rather than your clients having to go to your website to tie-in with a piece of paper). Obviously for email correspondence a link to your online t&cs makes perfect sense. As people are notorious for not reading t&cs, drawing special attention to the duration of your licence as you outline also makes sense and may avoid misunderstandings.
As for what you need to include, I have always found the Association of Photographers standard business terms a useful template. You can download them here, along with a host of other useful documents. I can also highly recommend their book Beyond the Lens which is available, as an ebook or hardcopy, from their website. Although it sounds like a photography manual, it's actually a manual on how to run a photography business.


text:
Embattled Scottish Labour leader Richard Leonard quits
The left-winger's resignation leaves the party without a leader four months from an election.
Scottish Labour Party leader Richard Leonard has resigned | Pool photo by Russell Cheyne/AFP via Getty Images
Scottish Labour leader Richard Leonard resigned Thursday, teeing up a leadership battle just months before crucial Scottish elections.
In a statement, Leonard — in charge for three years — said he had "come to the conclusion it is in the best interests of the party" for him to step down with immediate effect.
"This was not an easy decision, but after three years I feel it is the right one for me and for the party," he added.
A member of the Scottish parliament from the party's left wing and ally of former U.K. Labour leader Jeremy Corbyn, Leonard took over Scottish Labour in 2017 after a bitter leadership contest with Anas Sarwar — who is now an early favorite to take over as leader, according to media reports.
But the party has failed to eat into the pro-independence Scottish National Party's commanding electoral position, with the once-dominant-in-Scotland Labour finishing fifth in the 2019 European election and fourth in the general election later that year in terms of seats.
SCOTLAND ELECTION POLL OF POLLS (CONSTITUENCY VOTE)
All	2 Years	1 Year	6 Months	Kalman Smooth Kalman
For more polling data from across Europe visit POLITICO Poll of Polls.
Leonard faced a challenge to his leadership in 2020, as a handful of members of the Scottish parliament (MSPs) quit his team and put forward a motion of no confidence. They attributed the challenge to polling showing that nearly 60 percent of Scots had no opinion on the Scottish Labour leader, despite his three years in the role.
Referencing that challenge, Leonard said speculation over his position had become "a distraction."
Keir Starmer, who leads the Labour Party at Westminster, said Leonard had "led Scottish Labour through one of the most challenging and difficult periods in our country's history," and had "achieved a considerable amount for which he should be very proud."
But Neil Findlay, a member of the Scottish parliament and ally of Leonard, took aim at MSPs who had challenged Leonard's leadership.
He said those who had led a sustained "campaign of briefings to journalists, leaks of private conversations and the constant feeding of stories to the media in an effort to bring down a decent and honest man have succeeded."
"These people could not give a toss about the Labour Party members — they are driven by one thing and that is their own self interest," Findlay told POLITICO. "They make me sick."
Scottish Labour trailed the SNP by almost 40 points in the most recently released poll for the May Scottish parliament election.
More from ... Andrew McDonald
Merkel era may only just be beginning
By Matthew Karnitschnig
Mark Rutte pulls plug on Dutch government, plans immediate return
By Eline Schaart
UK senior doctor: We're 'drained and scared'
By Charlie Cooper
EU Confidential #183: CDU contenders — Platforms and politicians — 'Good' countries
By Cristina Gonzalez
Elections	Pandemic	Parliament	Scottish National Party
Keir Starmer	Richard Leonard