text:
Interview with Professor Rosemary Hunter
Professor Rosemary Hunter is a lecturer in family law, jurisprudence and legal theory as well as being a specialist in socio-legal studies and gender at Queen Mary, University of London.
She is a fellow of the Academy of Social Sciences, the Chair of the Socio-Legal Studies Association (since 2011), a founding editor of the online open access journal [email protected], and one of the General Editors of the Oñati International Series in the Sociology of Law.
Professor Hunter kindly took time out to discuss what it's like to be a legal intellectual rather than to practise, Australian family law, pronouns and judicial equality.
First things first: Can you tell me a bit about your background and what brought you to the law?
Goodness. Well, I don't have any family connections or any contacts of people in law. I grew up in Australia, in Melbourne. I went to a school that was academic and expected people to go to university and expected them to be doctors or lawyers and I certainly didn't want to be a doctor. And I didn't at that stage think of being a lawyer, I just wanted to do an arts degree and that's what I started out doing. I took a gap year and travelled and did all sorts of other things, and then at the end of that I literally woke up one day and decided that I wanted to do law. It felt as if it was out of the blue although obviously a lot of my experiences and background and so on must have filtered in at some point and led to that decision. So I swapped over. In Australia people often do joint undergraduate degrees…so I did an arts and law degree which was a combination.
Is it like a major/minor system like in the US?
Not really, it's actually doing both, which takes forever! It's five years, or six years if you do an honours year in arts. I had a wonderful time being as student, it was great. I really didn't want to stop being a student which is probably why I became an academic.
Ah, my next question was going to be why did you decide to become an academic rather than to practise?
So I studied law and I hated it. I really, really hated it. I found it boring and depressing and dispiriting because I worked out pretty quickly that there was a difference between law and justice and that we were there to learn about law and not to care about justice. But I was doing my arts degree as well and I much more enjoyed doing that which was in history and English literature, so I mostly hung out in the arts faculty and turned up to my law classes and tried to stay awake, and turned up to the exams and tried to pass.
I took a couple of years out to do my honours in history and then I thought "well look, I've sat all those exams in law I might as well make it worth something". So I went back and finished my law degree and in those last couple of years I started to do some optional modules and I found subjects that I was interested in: I did labour law and human rights and law and society and I got to write a dissertation. So at that point I thought "I'm actually starting to enjoy it" and I had some good teachers and people who inspired me and allowed me to think about justice as well as law. So by the end of it I think I was interested in it but I was interested in it academically, and I really wasn't terribly interested in the practical side of things.
I also wasn't entirely sure how to become a lawyer because I didn't have that kind of family background or really any of what Bourdieu calls social capital or cultural capital, that would carry me through into the legal profession, so I got a research job, then I ended up teaching and then it went on from there.
You're not just a lecturer in law but also a specialist in socio-legal studies, which as I understand it is how the law is actually experienced by those who are not practising it – bridging that gap between the law and justice, as you say. In family law, do you think there's a gap between how the law actually works and how the public thinks it works?
Oh definitely, absolutely. And that's one of the things we're always dealing with in teaching family law is that students come in with a set of preconceptions about how family law works and then you have to try to dispel those preconceptions and give them a more informed view about how the law works and what it says. Sometimes we're successful and sometimes we're not.
It's been actually made a little bit more difficult by that book that Ian McEwan wrote called The Children Act. It's not about family law, it's about children's rights; it's about a child who refuses a blood transfusion. This year, in the first tutorial, you go round and say "why did you choose to do family law?" and someone says "I read and I was really inspired" and I have to say "well, I've got some bad news for you: I think we'll be spending about ten minutes on that particular issue."
It's more public law isn't it really, or medical ethics. It's not family.
Yes it is medical law but it's children's rights and the extent to which children under the age of 18 can consent and their consent be accorded respect and so on. So you could call it children's rights but it's certainly not family law.
Mr Justice Mostyn has just said that the book has the wrong title. He enjoyed the book, but it's got the wrong name.
Exactly, that's right.
How does English family law compare to Australian family law?
I've actually studied family law in Australia and America and in England, because I did my graduate study at Stanford and I did family law as part of that as well. Australian and English law are quite similar, so it's really the details that differ. There are some respects where I think that English law is actually better: so I think that English matrimonial property law is much better than the Australian one – the emphasis on equal sharing, needs and compensation and so on I think is a much better framework than the Australian one which is still very fixated on contributions.
But then there are things about English law that I find completely baffling. So domestic violence: the fact that there are different rules for getting an occupation order if you're married or cohabiting, just doesn't make any sense at all to me, or that you have to have a separate thing called an occupation order which is different from a non-molestation order and harder to get and all those kinds of things. So in Australian law, you go to court, there's one kind of order – it's called an intervention order – and you can have any conditions on it which might include: removing the perpetrator from the house and it's not a problem.
And then also the distinction here between married and cohabiting property issues and the fact that if you're a cohabitant you're still subject to the tender mercies of equity – is really strange. But then, we have same-sex marriage here, not in Australia.
Do you think there should be greater rights for cohabitees?
Absolutely, I just think it should be the same: the marriage model should just be extended to everybody.
You're an expert in gender and the law. There's been another demonstration by Father 4 Justice recently where they got onto Royal property. Do you think family law in England is unfair to fathers, or has been?
No I don't, I absolutely don't. I think it's very fair to fathers; I think it gives fathers an awful lot. And I think that the statistics speak don't they – that in the vast majority of cases, even when you've got contested issues of contact, that contact will be ordered – it's incredibly difficult to get a no-contact order. So, the notion that women always end up with residence – well, I suppose we shouldn't talk about residence and contact any more, but child arrangements – the fact that the children often end up living with the mother is most usually done by consent and by agreement and that's what people want, and again if it's contested the fathers have equal chance of getting a shared care order which might not actually be in the best interests of the child. So I think that the courts bend over backwards to make sure that fathers maintain contact with their children. And if they don't, then it's because there's a really serious problem.
I heard a lawyer suggest recently that these protesters may be shooting themselves in the foot because they've scare-mongered to the extent that fathers get divorced and worry that they're never going to see my children again.
Yes it's almost a self-fulfilling prophecy, isn't it: people think that they're going to be discriminated against in the family court, whereas in fact that's not the case at all.
I wonder whether also it's just the logical conclusion of stereotypical gender roles: that if during a marriage you've fallen into those roles, they're likely to be perpetuated afterwards. Do you think that the shared parental leave laws that came into force in April 2015 will start to even out the division of labour?
I don't, and the reason that I don't is because in other countries that have had shared parental leave for an awful lot longer than we have, it hasn't made that much of a difference. The gendered division of labour is so strongly entrenched, and it's not just the gendered division of labour, it's also the gendered valuation of taking time out to care for your children. So men might have the right to do it but they don't take it because they know that they will be penalised in terms of their career prospects, that people who don't demonstrate 100% commitment to work will not be promoted or will not be valued in the same way as people who do. So I suspect that it won't actually make that much difference. There has to be more than just having shared parental leave, I think we need actual encouragement and demonstration that you won't be penalised by taking it. I think in the Netherlands they have a really high rate of fathers working part time and taking parental leave and that's perfectly accepted, but you need societal change at that level in order to make that possible.
There's a trend, both here and in America, in family law firms specialising in 'men's' or 'women's' divorce and there's now a charity called Maypole that's specifically designed to help women through divorce and separation and there are various forums for men too. Do you think it's a good thing for the legal and emotional support for family law matters to be divided along gender lines?
It's hard. I think you need to acknowledge the fact that marriage and divorce are gendered experiences and that we live in a society that treats people differently according to their gender and you have to take those kinds of things into account. So if you're dealing with a post-divorce situation you have to be aware of the fact that, women, for example, if they've been out of the workforce for a long time they're not just going to be able to walk back into a job or a job that's going to pay them enough to live on, or those kinds of things. So this notion about treating everyone as if they're the same when they're not is equally fallacious. But I'm not sure about specialising. I think you certainly need specialisation in things like domestic violence or children with disabilities or whatever it is, but I don't know about polarising in quite the way that you're suggesting. Because that then tends to essentialise. That then tends to say that all women are the same and all women have the same experiences, and all men are the same and all men have the same experiences, and I think we have to resist that.
I wanted to ask you about the judiciary. At the Law Society Awards back in October Baroness Helena Kennedy gave the keynote speech and there was a moment where she issued quite a strong rebuttal to Lord Sumption and his statements about female judges and equality – she clearly feels we should not be waiting around forever and should take positive action. And you and a colleague wrote a letter to the Law Society Gazette about the same issue. You've also lectured on the subject of judicial diversity. How do you feel about positive discrimination and quotas?
I'm in favour, I'm definitely in favour. I think we've sat around waiting for long enough really. And every new person who comes along says "It will be fine in five years. We just have to wait, we've just got to wait for the trickle-up. Women have been in the legal profession for almost long enough to be senior enough." Well, they've been there for absolutely ages. There's a much higher rate of attrition which makes it harder to get to the top, but there are plenty of good women out there who are perfectly suitable for judicial appointment. And this continually making excuses has just got to stop.
Do you find it quite difficult to convince people that it's a good thing?
Yes, and it's partly because people have such entrenched expectations. I think that people can see the way that the system works and so they expect to be able to get to a particular point. And then if you say, "well actually, we have to let some women in", then they think: "I might have to wait longer to get my appointment!" And so it's hotly resisted. I really like the kind of analysis that Kate Malleson and Rainbow Murray are offering which is about how we need to be focusing on men's privilege rather than women's disadvantage or discrimination. What possible basis could there be for continuing to have a system in which men are so grossly over-represented?
I think the reason that people are so resistant to the idea of quotas is because as soon as people hear that they start saying: "It needs to be about merit!" But that assumes that the system we have now is based on merit, when it's not necessarily.
Yes, so number 1: we don't have a merit system at the moment, we have a system of privilege, and if those men had to compete with women on an equal footing they might find it harder to get appointed. And number 2: that's also assuming that there aren't meritorious women out there who simply don't apply because they think they don't have a chance, or for whom judicial appointment is a really unattractive proposition and so you could be appointing them and they're perfectly meritorious, but you might also have to do some other things about the institution like not having circuits, but having judges based in different parts of the country permanently; I know that's one particular disincentive. And they've just been decimating judicial pensions which might well be putting some people off!
You mentioned the idea of gender essentialism earlier, and when it comes to family law there's an incredible amount of judicial discretion and scope for a wide interpretation for the law. Do you think that the gender of a judge plays a role in how they might do their work without bringing gender essentialist ideas into the equation?
Yes, we can't assume that women will judge in a particular way and men will judge in a particular way. And I would hope that all judges were sufficiently socially aware and informed and educated to be conscious and reflective about their own biases and their own preconceptions. But we know that they're not. And in that situation we also know that a judge's personal experience is going to affect the way that they interact with the people in front of them. So a female judge might have more understanding about the decisions that a woman is making or a woman's particular experience than a male judge might and vice versa; I think that's almost inevitable.
But I think also that one of the benefits that you get from having a more diverse judiciary…so if we're looking say at the lower levels of the judiciary – I did a big judicial training thing over the last year or the year before about the new child arrangements programme and particularly about dealing with litigants in person – and we talked to all 1300 family judges: district judges and circuit judges. It is a very mixed group, and I suppose the benefit of that is that it's not just who the judge is who's presiding over a particular case but the fact that the judges behind the scenes talk to each other, and talk about how they dealt with cases and particular issues that came up, and others listen and say "I never would have thought about it like that". But having that conversation is a really important way of expanding the realm of judicial experience.
I wonder if it's difficult to pinpoint what exactly is a feminist judgment. Because one person might say for example "A big payout on divorce is supportive of women because it recognises their contribution to the marriage in looking after the children". But then on the other hand you may have someone like Baroness Deech in the House of Lords who would say the opposite…
Yes, she would say: "that's a terrible message to send!"
…because she wants women to be economically independent. I can see where both sides are coming from on that, but they're two sides of the same coin.
I don't think you could ever say that there's a single feminist judgment. There might well be different feminist approaches to things. But in that particular situation, I would say that there's a difference between encouraging women to be economically independent from the start, and maintaining their own income and not giving up work and all of those kinds of things; versus what you do with them when you've divorced and you have given up your income and haven't worked for years and sacrificed everything for the sake of the family. You don't then punish that woman for making the choices that she did. It's the difference between making a judgment and having a policy.
You edited the book Feminist Judgments: From Theory to Practice, where a collection of lawyers rewrite various judgments. In the introduction to it you talk about divergent feminist approaches, and I wondered if you had any thoughts on orthodoxy in those sorts of discussions, and the idea of 'no-platforming' people who don't conform to that orthodox way of thinking?
Well I'm in a difficult position there because I think people would see me as someone who has no-platformed other people! I object to the whole concept of 'no-platform' because the concept of no-platform to me is like the concept of political correctness. It's a way of shutting up someone. So if you're saying to me "no-platform", that's a way of not listening to the argument that I'm making. It's just like "you're politically correct" is a way of saying "I'm not listening to you, your argument has no credibility." So I think that there are circumstances where it is appropriate not to give someone a venue or an avenue to repeat views that are known to be offensive and that will injure and distress people and make them feel inferior. And if that's the message that's going out then I wouldn't be doing anything to encourage that. I think that speech has to be exercised responsibly.
Could you tell me more about the book Feminist Judgments, given that it's been a few years now since the book was published in 2010. What you have taken from working on the book, looking back now, and is there anything you would change about it?
Yes there are a couple of things that I would change about it, although I think it's been quite amazing the way it's taken off in other parts of the world. We took the idea originally from the Canadians and then there was the English project, then the Australian project which has published a book. There's an Irish project currently going on which is the Republic of Ireland and Northern Ireland together, there's an International law project which is rewriting judgments from several international courts and tribunals, there's an American project that's just doing American Supreme Court cases, there's a New Zealand project that's just starting. So it's really taken off as an idea around the world. And then there have also been a number of other projects that have taken the concept but rather than doing feminist judging have taken another philosophical approach. So there's a children's rights judgments project that is currently going on which is rewriting cases as if children's views really mattered and there's a wild law project which is rewriting cases as if the earth's views really mattered – a sort of ecological project! I think it's great the way this has expanded out and really captured people's imaginations; that people have taken the idea and run with it in all sorts of different directions. And I think there's loads of scope for more to be done: I'd love to see a post-colonial or a critical race theory version of it being done, a queer version and so on and so forth.
But what I would do differently about the English one…well I think that we did a pretty good job really! But a couple of things that would have been interesting to do that we didn't think of at the time: the idea of having different people rewriting the same judgment. Again, just to reinforce that point that different feminists might have different points of view – and we did actually have some offers, some people offered to write the same thing and we said "no, no, we can only have one!" And actually I think we missed a trick there a bit and it would have been interesting to see two different feminists writing about the same case.
You could do a second edition…
Yes. And I suppose also it would have been nice to get more reaction from the judges. Baroness Hale was incredibly supportive of the project and a really good sport in terms of the fact that we rewrote several of her judgments and she was very gracious about that! But it would have been interesting to get more of a response, to have more of a dialogue around what we were trying to do and how that might change the way that people think about actually doing their job.
Speaking of Baroness Hale, how do you feel about prenuptial agreements?
Aha! I agree with her. I think that her point is absolutely well taken and it was confounded by the fact that it was a role reversal and it was the woman who was incredibly rich and it was the man who had given up whatever. But I do think that her point is that the whole point of prenuptial agreements is to reduce someone's entitlements, is to diminish something that someone would be entitled to and it's usually going to be the woman – it's certainly going to be the one who's in the less powerful financial position and that's usually going to be the woman, and so I do agree with her dissent in that one rather than the majority.
Some have suggested that the majority judgment in Radmacher might not have gone the same way if it had been the man with the money as is usually the case. But I'm not sure about that.
I think that was certainly part of it, the fact that these men looked at this man and thought "here's someone who should have looked after himself". But that's not the principle really; the fact is that for whatever reason he was left in a very poor financial situation. It's also interesting that the trial judge in that case was Mrs Justice Baron – another woman who had found for him – and then Lady Hale in the Supreme Court, so it's interesting the gender split in the judicial reactions.
Female judges can sometimes seem less sympathetic to women.
They can be, absolutely; they can be in the Ruth Deech camp, punishing you for making the wrong decisions.
In a lot of your research you're taking an empirical approach, collecting and using data. Does a feminist approach to the law mean you have to rely a lot on anecdotal information? I ask because I often see that as something that's levelled at feminist researchers; for example, in response to the Everyday Sexism project, detractors will come back and say: "that's just anecdotal, show me some statistics". Have you encountered that?
Yes right, that people are saying "well that's just your opinion". And I think the statistics are there to speak to that. Five people might make it up, 20,000 probably don't make it up! Actually I think the opposite in some ways. I think that the conventional views are supported by anecdote and conventional wisdom and no evidence whatsoever – like the idea that it is universally beneficial for a child to have ongoing contact with both of their parents – well it's not always. The research evidence doesn't say that, the research evidence says: if it is safe, and it has a big caveat. So I think as feminists we're very careful to try to use research evidence and rely on research evidence; and that's in fact one the hallmarks of the feminist judgments is that they do bring in a lot of social science evidence and actual research to lay the ground or set the scene for the broader social context in which the case is occurring and try to give it that scientific grounding if you like, rather than just relying upon anecdote. I actually sometimes think that it's the conventional position that's more likely to rely on anecdote; the oppositional position is always being challenged to produce evidence and so we do.
Is that what you refer to as 'judicial notice', which I understand to be a sort of taken-as-read statement, or an understanding of something that's deemed to be self-evident?
Right, so there's two different things. So one is actually bringing in existing evidence and the other one is taking judicial notice of a notorious fact. And although I've argued that feminists can and do take judicial notice of feminist facts, that that does tend to happen a lot in those "all right-thinking people would think…" or "everybody knows that…" and often it's not. Things like when judges say "these days most couples share the housework…" well, that might be your experience, but it's not actually true. Or "women often work until they have children". Well again, where are your statistics on that? "Lots of men work part time". Well 89% of part time workers are women, so…yes I think the anecdotalism is much more likely to come up on the conventional side.
You worked on a three year project called 'Mapping Paths to Family Justice' which investigated different forms of dispute resolution. Do you think that 'out of court' options are the way forward for family law and should alternative options be signposted better?
Good question, because what we're actually seeing since the LASPO Act is a great rise – well they did dip but they're going up again – a big rise in C100s – the child arrangement applications in the last six months or so. So I think that the major problem with the LASPO Act is that it took solicitors out of the picture for people who would otherwise have been eligible for legal aid, who are now not getting advice about out of court options. And what solicitors used to do was see them, send them off to mediation, try to sort things out out of court, rather than going to court as a first resort, and people don't necessarily know about the options now. So I think that's a real problem.
What we ended up concluding from that project is that people need more information about what the options are and need to be given real choices. So they need to be signposted in the direction of what's the most appropriate form of resolution, but given the choice about should I go to mediation or should I use collaborative law or would solicitor negotiations be better? But it's very difficult to actualise that in a situation where some things cost a lot more and people don't necessarily have the money, or the advice that people are being given is not very informed advice and so on.
How do you feel about male pronouns being the default in statute?
It drives me bonkers! It really drives me bonkers. And it's also in contrast to Australia where they got rid of sexist language out of statutes. They say "he or she" or they say "they" or they avoid the use of pronouns. And that's been in place for as long as I can remember, it was a really early feminist victory I think. They just started writing legislation differently – gender inclusively or gender neutrally – rather than men as the model of everything. And so it really grates on me. Especially when they're talking about pregnant women and they say "he".
Also in the practice of law, legal letters are addressed "Dear Sirs" even if you have a female dominated firm!
What do you say to people who take issue with the term 'feminist' and instead insist on saying something non-committal like 'humanist'? There are people who say that if you're talking about equality then you should be talking about all people.
Well a humanist is a respectable thing to be, but that's not what I mean! It's not equality in an abstract way, it's equality in a gendered world, and so, I think you have to use the word feminist. I certainly am aware of the bad name that feminism has and I think that that's very much a product of the way that it's been constructed in the media and that is not an accident. Feminism is dangerous, it can actually change how things work and so obviously it's going to attract opposition and suppression even, and I think there's been quite an organised attempt both to dismiss feminism and to give it a bad name so as to discourage people from thinking about it, which is why I'm happy to use the term feminist and I'm very happy that people like Lady Hale are happy to use the term feminist, and I think that we have to reclaim the title and be proud of what that stands for rather than creeping around and saying "Oh I'm sorry…what I really mean is…yes I believe in all these things, but I'm not a feminist!" Well actually yes I am a feminist.
The High Court in Northern Ireland has just made a ruling that only allowing access to abortion in very limited cases is contrary to human rights. It sounds like a watershed moment but will this be a tough nut to crack?
It's hard, that is a really tough one. And what women have to go through in Ireland and in Northern Ireland is just unspeakable. It's terrible, both the fact that if you want to have an abortion you have to either have the money to travel to England or you can't get one and even if you're dying you can't get one and just the horror stories, you wouldn't think that in the twentieth century this would still be going on in a first world country. So I really hope that this decision will make a difference, but they need to put in place facilities for making safe legal abortions readily available. And if that's not going to be through hospitals then they have to allow family planning clinics like BPAS to provide services and facilities and do all of those things. So it actually has to be available on the ground rather than just in legal theory.
If you could unilaterally enact one reform in family law, what would it be? And how about one equality law?
Hmmm. Oh gosh, I gave you my list of three at the beginning didn't I? I would make it much easier to get occupation orders – I would just make occupation orders very much more readily available; I would enact cohabitation reform so that the matrimonial property regime applied to cohabitants with some qualifying period or definition of what counts that was a fairly low threshold; and I would repeal the section of the Children and Families Act – the presumption that they put in last year about both parents.
That might not be a very popular one…
I would also abolish MIAMS, and get rid of the LASPO Act, restore legal aid for family law… Shall I go on…?
So lots of things! What about one reform in equality law?
I haven't done a lot of work in equality law lately so I'm not sure that I know what my one reform would be there. Well there's a couple of things that come to mind, one of which would be to enact the provision in the Equality Act that the coalition government withdrew, the bit about class or social origin as a protected ground. And the other thing I would do with equality law is abolish the enormous fees for bringing cases to employment tribunals.
Finally…there was so much hand-wringing about Atticus Finch in the newly published Harper Lee book. Do you have a favourite fictitious lawyer or social justice campaigner?
Gosh. I don't. I can say quite categorically that I don't. Well, I read a lot of fiction but I read fiction as entertainment and as escape rather than as moral guide. So I don't really have an exemplar as far as a fictional character's concerned.
Or a real one?
I'm a big fan of Lady Hale. I think that she has done an incredible job, an incredibly lonely job. Just imagine what her life must be like: always surrounded by men, always being the only woman, always having to hoe that row and yet she keeps doing it, and she keeps coming out with really strong statements and lectures and being supportive and all the rest of it, so yes, I'm in her fan club definitely.
And how long do you think it will take for her to have a female companion in the Supreme Court?
I've got a very bad feeling that she'll never have companion. I'm very pessimistic about that. I think that if there was political will to make it happen it would have happened by now and I think the fact that there isn't political will means that it's not going to happen. It's difficult now with the Judicial Appointments Commission and the fact that it's a really bureaucratic process for appointment to the Supreme Court, it's in the legislation. But enough people – important people, powerful people – have got to want to make it happen and that's just not happening unfortunately.
The Children Act by Ian McEwan
Inclusion of mothers' names on marriage certificates rejected


text:
Beta C can refer to:

Beta C-Mag, a NATO-standard magazine for rifles and submachine guns.
Titanium Beta C, a titanium alloy

redpajama_set_name: RedPajamaWikipedia


This ebook constitutes the completely refereed post-conference court cases of the first foreign convention on Swarm Intelligence dependent Optimization, ICSIBO 2014, held in Mulhouse, France, in may well 2014. The 20 complete papers provided have been conscientiously reviewed and chosen from forty eight submissions. subject matters of curiosity awarded and mentioned within the convention specializes in the theoretical growth of swarm intelligence metaheuristics and their functions in components equivalent to: theoretical advances of swarm intelligence metaheuristics, combinatorial, discrete, binary, restricted, multi-objective, multi-modal, dynamic, noisy, and large-scale optimization, synthetic immune structures, particle swarms, ant colony, bacterial foraging, synthetic bees, fireflies set of rules, hybridization of algorithms, parallel/distributed computing, desktop studying, information mining, info clustering, determination making and multi-agent structures according to swarm intelligence ideas, version and purposes of swarm intelligence ideas to genuine international difficulties in quite a few domain names.
The 2 quantity set LNCS 10072 and LNCS 10073 constitutes the refereed court cases of the twelfth foreign Symposium on visible Computing, ISVC 2016, held in Las Vegas, NV, united states in December 2016. The 102 revised complete papers and 34 poster papers awarded during this ebook have been conscientiously reviewed and chosen from 220 submissions.
7) and of the assumption jJ. 1 (E(n)):er 1- ~ 0 = p. 1 ( E ~n)) . = So the right-hand inequality in ( 8. e. eq. 2). The second part is proven in the same way. Fig. 1 gives an intuitive idea of the theorem we have just proved. 64 Proof of Shannon Theorem larrangement according. L1(E ~)') = foo quences of elements from n Fig. 1. Illustrating Neyman-Pearson lemma. a(E<;'l) = y: 9. Proof of Shannon Theorem on Source Coding Based on Neyman - Pearson LemmL When we are confronted with the source coding problem, it may happen we know the maximum probability of erroneous decoding, say Pe ,the receiver is prepared to tolerate.
Of codes capable of the performances foreseen by the theory • Moreover, nothing is said about the speed at which Pe goes to zero as L increases, in 53 Necessity of Further Investigation ca-se R > H , while such a parameter is very important for practical purposes the complexity of encoding and decoding apparatus grows with L, and an exact estimate of the L needed to achieve a desired probability of error is very useful. To evaluate such a speed, we now proceed to further investigation. 7. Testing a Simple Alternative.
I. •. 2(x1) ... p. 24) E \") , we get : (E\")/ Prob h 1 ) ~ 2 n(I(,u. ). (E \") / h,). : 1 -11- <> > E~n) c. 25) Taking logarithms on both sides of eq. 20) we get the desired result expressed by eq. 21) in force of the arbitrariness of t. In the same way one can prove the follow- ing Theorem 7. 2. >! '( 0 ( 0 < "(0 < 1 ) of "(, the is described by the follow ... 27) or t ~m n-oo (fi! ,IIJ1i). 28) 8. The Neyman- Pearson Lemma. In this section we shall state and prove a particular case of the well-known Neyman-Pearson le~ rna, which gives a useful hint concerning how to choose the sets fima fi ~ E~n) and and "(!


Dr. Zee's corrosion risk assessment seminar for Pennsylvania Utility Commission(PUC) at Pennsylvania State University in 2017.
Condition assessment consists of on-site inspection and testing, concrete Core samples, and petrographic analysis.
Dr. Zee presented a short course on corrosion risk assessment and cathodic protection for CUC engineers and technicians.
"Matergenics is a new name in the world of materials science and corrosion engineering but it also has a famous owner Dr. Mehrooz Zamanzadah or Dr. Zee. He has provided technical support and development to the aerospace industry for many years. My association with him has been through US Airways and American Airlines (the largest airline in the world).
Approximately 18 years ago Dr. Zee's team won the approval from various engine manufacturers to establish an engine chip and oil filter analysis program that reduced engine in flight shut downs (IFSD) to zero and is being used today on the entire fleet at the New American Airlines.
His team over the years has provided failure analysis tech support that saved US Airways millions of dollars in warranty claim against OEM aircraft manufacturers.
His team was called upon by both the FAA and NTSB to provide analysis were quick and accurate answers were needed to solve aircraft equipment failure issues.
Dr.Zee's has been a major technical contributor to the US Airways/American Airlines carbon filters for the air quality program, evaluation of fuel filter clog due to microbial influence, and corrosion due to MIC influence.
Dr. Mehrooz Zamanzadah or Dr. Zee as he is known to the pole industry has been for many years a valued consultant to Valmont Industries. His new company, Matergenics, continues Dr. Zee's legacy to provide expert analysis and solutions to extending the life of the infrastructure through corrosion mitigations and failure analysis.
I have had the honor or working with Dr. Zee professionally in committee work and in the pole business for many years and Valmont has benefitted greatly from our association. I look forward to continuing working with Dr. Zee and Matergenics.
Please visit Matergenics Museum of Materials and Failure Analysis at YouTube.


Consider our cornucopia of crystal-clear and cute capped containers. These are clear plastic HDPE in a roundish profile, 2-5/8" tall x 2-1/16" across x 7/8" thick with a 1/2" ID mouth and a spherical deep-teal gasketed screw cap They hold 1.5 oz. Reminder: These are surplus, so the color of the caps may change from one crate to the next.
These clear plastic jars look like the ones that medicated lip balm comes in, but these are empty. Measure approx 1-1/2" tall x 1-1/2" dia with a mating plastic screw cap, and hold 1 oz. May we suggest creating your own lip balm and saving a fortune? Also good for toting a few pills on a trip (pain relief, allergy, vitamin), and for storing glitter, and for collecting insects, and for all of the other stuff you'll come up with.
These perfect little clear-plastic canisters have snug pull-off tops. They fit into die-cut circles in a black foam pad for display or shipping, with the cut-out foam placed inside the canisters. The foam makes them ideal for safe storage and artful display of individual coins, seeds, insects, stones (precious, semi-precious, or gall-), baby teeth, locks of hair, or any number of tiny treasures. Or toss the foam and store small amounts of anything that doesn't need a screw top. You pick (50) small canisters at 1-1/4" dia x 11/16" deep, or (12) larger canisters at 1-3/4" dia x 5/8" deep.
If I Could Put Glue In a Bottle Crafts and repairs are made much easier with an applicator bottle. This translucent 20ml/.68-oz plastic bottle with a screw-cap that has a 1-1/2" long x 1/32" dia dispenser needle with a protective cap.
These clear plastic (PET) jars are small peanut-butter jar sized. Measure 3-5/8" tall x approx 3" dia with straight sides, and hold about 10 oz. which is roughly the same size as an 8-year old's marble collection, double the amount of coins in your car's cup holder and the ideal space to hold 17 fireflies before releasing them back into the night. Come with a gasketed red plastic screw cap.
These clear plastic jars look like they used to hold food, but they didn't. If they had, it would have been approx 14 oz of food But it wasn't. Measure 4-7/8" x 3-1/16" dia and come with a gasketed white plastic screw cap. Made in the USA.
Think lip balm, or glitter lotion. These clear plastic jars measure 1-3/16" dia x 3/4" tall with non-gasketed black plastic screw caps. Holds 6ml or 1/5 oz. Or if you're starting a collection or riding the bus, 10 U.S. quarters.
Or drip some drops. These translucent white plastic (HDPE) bottles hold 50ml (1-2/3 oz) and measure 3-1/4" x 1-1/2" and come with a matching safety dropper cap that's marked for 0.4 and 0.8ml. Our each is a pack of (6) bottles so you'll have enough to drip drops through the tulips before needing to refill.
These clear plastic bottles stand 5-1/2" tall x 2-1/16" x 1-3/16" in an oval profile (make that "elliptical") with a gasketed black screw cap and a mouth with an ID just over 1/2". Hold approx 4 oz each. Made in USA.
These really nice, clear plastic jars are 8-sided, with 3-1/2" sides interrupted by 1" wide corners x approx 4-1/4" tall. Great for paper clips, thumbtacks, rubber bands, decorative marbles or sand, glitter, little stickers, loose change, nails, screws and lots of other things you'll think of. You pick: the 20-oz jars with gasketed black screw tops, or the 18-oz jars with non-gasketed white screw tops.
Our rare, green plastic bottle holds 10 oz, and measures 2-3/8" dia x 6" tall with a 7/8" ID mouth on top of a 1-3/4" neck. Nice, pleasing shape. Screw cap is black plastic and gasket-free. Made in USA.


text:
by Eric Schmidt, Jonathan Rosenberg, Alan Eagle
in Management & Leadership
How a football coach shaped Silicon Valley. Football and technology might seem like completely opposite realms, but for Bill Campbell, nothing could be further from the truth! Told through the eyes of Google icons Eric Schmidt, Jonathan Rosenberg and Alan Eagle, this book outlines Campbell's life and legacy. Demonstrating what the football field and the tech world have in common, the men who were influenced by Campbell illustrate the impact of his life, success, and coaching philosophy on their successful tech careers.
"Trillion Dollar Coach" Summary
Summary by Alyssa Burnette. Audiobook narrated by Alex Smith
What do you think of when "tech guru" comes to mind? Do you think about Steve Jobs? Or maybe that nerdy guy you went to high-school with who wound up becoming a millionaire? No matter what you think of, the tech world usually aligns pretty closely with our vision of sleek, cutting-edge technology and nerds. But it doesn't usually include football players. Maybe that's because we contrast athletes who play contact sports as being rough, assertive, and aggressive. We might even have a preconception that they're not too mind. (Does the phrase "dumb jock" come to mind?) So, if you don't think a football player would be a great fit in Silicon Valley, it's an understandable assumption. It would be even more forgivable if the man in mind was a football coach.
But that's just who Bill Campbell was: a man who was at ease on the football field and in the boardroom. A man who was as happy coaching college football as he was rubbing shoulders with Steve Jobs. In fact, not only was he friends with tech icons like Jobs, he was also one of the minds behind Apple, Google, and many other household names! So, how did this unlikely partnership come about? Through the course of this summary — and over 80 interviews with the tech gurus he mentored — we'll unpack his story.
Chapter 1: Campbell's Origin Story
We all know the stories of men like Steve Jobs and Bill Gates. These are the revolutionaries who dared to think outside the box, who were too unique to fit into the mold of traditional higher education. These are the inventors who drop out of college so they can change the world. And indeed, both went on to become wildly successful before they were even thirty. As a result, it's easy to form a certain stereotype of what a "typical" Silicon Valley pioneer looks like. But Bill Campbell broke that mold in more ways than one.
In addition to being much older than your traditional techie — (Bill was in his forties by the time he hit the Silicon Valley scene) — he also wasn't born with access to any significant resources. He would never have received startup capital from his father — a Phys Ed. teacher who also worked in a local factory to make ends meet — and he didn't have powerful family connections. If Bill was going to make something of himself, it would never have been through nepotism or family money. So, he threw himself into his schoolwork, even taking on extracurriculars like writing for his school newspaper. His opinion pieces exhorted his classmates to do their best in their studies, avoid procrastination, and go after what they wanted in life. But surprisingly, neither academics nor journalism defined young Bill Campbell's future goals. For him, these were important, but not the direction of his future career.
No, what he really wanted was a career in football. And that's exactly what he worked towards. After earning a scholarship to study economics at Columbia University, Campbell left his hometown of Homestead, Pennsylvania in 1958. That's where he joined Columbia's football team, the Lions. Although he was significantly shorter and slimmer than their average football player — at only 165 pounds and 5'10 — he brought a spirit of fight and fire to the team. Inspiring his teammates with his willingness to tackle challenges head on — even when those challenges were represented by a hulking opponent — he soon earned the nickname "Ballsy Bill." And thanks to the example he set for the team, the Lions won the Ivy League title 1961. It's worth noting that, after Bill graduated and left the team, they've never won the award since.
After his illustrious term on the school football team, Bill pursued his dream of a career in football and it looked like his dreams were coming true! Upon graduation, he was instantly offered a position as an assistant football coach at Boston College. He accepted as a heartbeat and moved to Boston in 1964. He then used the next ten years to hone his skill and reputation as a valuable coach and it wasn't long before additional offers from universities came pouring in. Only this time, with ten years of success under his belt, they weren't inviting him to be an assistant. This time, he would be responsible for leading an entire college team. Bill spent a lot of time mulling over the various offers, weighing all the pros and cons to determine the best choice for his future, and he was especially torn by an offer from Penn State. This university was the old stomping grounds of America's star football coach, Joe Paterno; it would be an honor to follow in his footsteps.
But then another offer came in and Bill's choice was instantly simplified. He rejected the offer from Penn State at once and packed his bags because Columbia had just offered him a job. Unfortunately, however, this decision was made on the principles of loyalty and sentimentality; because the offer came from his alma mater, Bill wasn't quite as objective as he had been about the other offers that arrived. And indeed, this decision was ultimately not the best choice for his future. Although Bill was thrilled to return to his second home and delighted at the opportunity to coach the team he had once played for, he couldn't change the team's lack of funding, poor sportsmanship, or rundown facilities. The football team had gone downhill fast in the last ten years and it showed. So, after leading the team to victory in only 12 games that season and ultimately losing 69-0 in a major game, Bill reluctantly admitted that staying in this job was not the right call. He resigned in 1979.
Chapter 2: From The Football Field to the Boardroom
Having resigned as the Lions' coach, Bill decided his career in football was over. He felt that he chased his dream as long as he could; there had been great times and badtimes, but ultimately, it didn't work out. So he decided to call it and find a new vocation. Although 39 isn't the typical age for someone to start looking for their first job, Bill put himself out there again, determined to find something in a new industry. Business appealed to him, so he took a shot at a position with the J. Walter Thompson ad agency and got it! Now starting over in a brand new world, Bill realized that even if he wasn't on the football field, he could still be a team player and give it his best and that's exactly what he did.
As a result, clients and colleagues alike loved him. In fact, Kodak — one of his major clients — love him so much that they offered him a new job as their new head of consumer products! So, after only a short time with J. Walter Thompson Ads, Bill left for Kodak. And though each of these stories could be classified as major successes on their own, Bill's success story doesn't end there. In fact, it's only just starting! That's because Bill's real big break — the one that would really change his life — occurred when a college pal from Columbia called to tell him about a new job offer. Bill's old friend John Sculley had resigned from a prominent position at Pepsi to take a new job as the Chief Executive Officer for a little tech start-up called Apple. He wanted Bill to go with him.
Now, chances are, we all probably have that one college buddy who always falls for pyramid schemes, who always thinks they've discovered the next big craze and always invites us to join in. Most of the time, we don't listen to them. More often, we just think they're crazy. But Bill thought John was onto something and so, after only one phone conversation, he was sold! He quit his job at Kodak and made the switch almost immediately. Why? Although it might sound reckless, the truth was that Bill had actually done a lot of critical thinking. He liked his job, but he was aware that he didn't want to stay there forever. At some point, he knew he would want to move up the corporate ladder, but he also knew that he didn't have the right background for it. When it came to more prominent positions, employers would want someone with a background in business, someone who knew the ins and outs of the trade. He was never going to get those jobs.
But if he moved to California, he reasoned that he could forge a new life for himself in Silicon Valley. He had started over twice now and he could do it again. If anything, it was likely to be easier in California, where everyone was more relaxed and talent and passion counted more than your experience. And this time, there was no question that he'd made the right call. Within a scant nine months, he had gone from a low-ranking position to Vice President of Sales! And just like that, he was responsible for the launch of Apple's very first signature product: the Macintosh computer.
Chapter 3: Bill Becomes a Business Mentor
Bill loved working at Apple and he loved the opportunities his role as VP of Sales gave him. He especially loved working with his team and giving them the right direction to help them succeed. But he wasn't just a leader for his team. Because his position necessitated working closely with Steve Jobs, the two got to know each other well over the years. And after awhile, they established not only a close friendship but a pattern as well: every time Jobs wanted advice about something or needed a sounding board to help with creative problem-solving, he called Bill. And that's how Bill realized his ultimate calling: he was great at mentoring and business coaching,
He soon left Apple to establish his own coaching business and — with word of mouth promotion from someone like Steve Jobs — it wasn't long before Bill was the talk of the town. That's what prompted a young man named Eric Schmidt to reach out. In 2001, Schmidt was in much the same position that John Sculley had been in just a few years ago. He had suddenly been elected the CEO of a little tech start-up named Google and he figured he could use all the help he could get. However, Schmidt was also pretty confident in his own tech savvy and intelligence and he was skeptical about the teachings of a former football coach who had no "real" tech or business experience. But he asked Bill for a consultation just the same.
That first meeting marked the start of a partnership that would last for more than 15 years. After 15 years of meeting with Bill every week, Eric was not only sharper and more successful, he was the head of a multi-billion dollar company. To this day, he credits an overwhelming portion of his success to Bill's mentorship. So, over the course of these remaining chapters, we're going to dig deeper and take a peek at Bill's advice.
Chapter 4: The Management Style You Really Need
Bill's advice came in handy during one of the biggest management crises in Google's career. Like many new start-ups, Google was learning through trial and error, and that included experimenting with its management style. So, in an effort to keep things creative and breezy, Google's co-founder Larry Page was trying out a new model of organized chaos in which he got rid of managers. Operating on the assumption that managers inhibited creativity, Page was hoping to free his team from restrictions and give them the opportunity to do their best work.
Bill disagreed with this model, however, and — unsurprisingly — that resulted in him butting heads with Larry. Bill argued that this might be a good idea for a short period of time, but that it would ultimately collapse. That's why he argued that they needed to bring managers back in. Larry disagreed and the two might have remained in a headlock forever until Bill suggested asking the people who were most affected: the workers who no longer had a leader. A quick poll of Google's employees resulted in aunanimous response: everybody wanted managers back. Larry was dumbfounded until the employees explained why. They wanted managers to help with conflict disputes because the new system of equality meant that no one prioritized solving someone else's problem ahead of their own.
So, Bill argued that they ultimately needed a middle ground: a leader who could step back enough to foster creativity and avoid micromanaging but step in to resolve conflicts when needed. That's why he argued that a manager's primary role should not be to control the workers or impose a harsh system of rules, but rather to draw everyone's attention to the company's core values. By helping the team return to their mission, the leader can then facilitate a session of helpful problem-solving that allows everyone to stay on message and succeed.
Chapter 5: Don't be Afraid to be a Friend
Bill also recognized that many people in positions of power are afraid to show emotion or be friendly with their colleagues because of the perception that this might undermine their authority. But Bill knew that nothing could be further from the truth and his example proved this to everyone he encountered. Maybe it was because he was such a team player or because he was just a naturally friendly guy, but no matter where he went, Bill couldn't help exuding an attitude of friendship and warmth. He was a hugger. He remembered people's names. He remembered little details about his colleagues' families. And when Steve Jobs was dying of cancer, Bill visited him in the hospital every single day.
These examples illustrate that, yes, kindness might have come easily to Bill, but it was also more than just a personality trait. It was part of a dedicated effort to connect with other human beings and enrich their lives. And it not only made him an effective leader, it enabled him to inspire others. Leading by example, Bill taught men like Steve Jobs and Eric Schmidt that the most powerful leaders are those who aren't afraid to be real. They use their positions of influence to break down barriers, to be inclusive, and to show everyone around them that they care. This was especially evident in Bill's commitment to find the best players for his team and this attitude often lead him to put more women in positions of power.
For example, Deb Biondolillo recalls that she was head of HR for Apple's US headquarters when she encountered Bill. She was one of a very small percentage of women who held senior positions with the company and as a result, she was often intimidated in meetings with the predominantly male boardroom. This meant that she always favored a seat in the back where no one would notice her. But Bill noticed. One day, he simply called out, "Why are you hiding all the way back there?! Get up here!"Deb debated about taking his advice for a while before finally going for it. But when she finally dared to snag a seat at the head of the table, another executive — Al Eisenstat — gave her a sharp glance as if to say, "What do you think you're doing?" Deb softly asserted her right to claim a place at the table, but it was Bill's nod of assurance that caused Al to take her seriously and back off. That moment of kindness helped Deb integrate into the boardroom and become more assertive. It was also a moment she remembered forever.
But Deb wasn't the only one who remembered it; Bill's commitment to inclusivity was one of the hallmarks of his coaching and it rubbed off on everyone who learned from him. He was always quick to remind his mentees that they didn't have to be extroverted like him. It's okay if you're not a people-person by nature or naturally outgoing. You can still use your unique personality to foster a spirit of acceptance and warmth in the workplace. Phil Schiller, an executive at Apple, recalls that Bill instituted a policy which asked people to get out of their chairs and clap for presentations they genuinely liked. And although this took place in the boardroom of one of the world's leading tech conglomerates, Schiller recalls that Apple executives always felt a sense of almost childlike warmth and pride when people clapped for their work.
Likewise, a colleague named Bill Chizen remembers that practicing Bill's style of leadership didn't come easily to him. But by following his friend's example, he quickly learned to remember names and ask simple questions that showed he cared. And almost overnight, he found that his relationship with his colleagues improved dramatically! This just goes to show that you don't have to change your personality or mimic someone else's style in order to be a kind and effective leader. Just remember to be real, show your emotions, and let people show you care.
Bill Campbell — a working class guy with a background in coaching c0llege football — isn't who you think of when you envision a typical Silicon Valley icon. But that's the beauty of his story! Because of his passion, team-player spirit, and invaluable advice, Bill revolutionized the lives of everyone who met him. He didn't set out to change the world or even to take Silicon Valley by storm; instead, he simply made the most of each opportunity life handed him and made the world a better place by simply being himself.
After bouncing from a career in college football to marketing to sales, Bill recognized that his true calling lay in helping others become their best selves. So, he simply gave advice to people who needed and transformed fledgling start-ups into titansof industry. He might not have made a name for himself in the football world as he'd hoped, but Bill Campbell was still a trillion dollar coach to a different type of team.

redpajama_set_name: RedPajamaCommonCrawl


"Short, oh Brāhmins, is this human life, it is of no significance, trifling, full of suffering and troublesome. You should get enlightened by mantras, you should perform wholesome actions, you should lead the holy life, for those born beings there is no escaping death!
"Short, oh Brāhmins, is this human life, it is of no significance, trifling, full of suffering and troublesome. You should get enlightened by mantras, you should perform wholesome actions, you should lead the holy life, for those born beings there is no escaping death!" Because one who lives today, lives the period of one hundred years or just a bit more.
During this life of a hundres years, oh Bhikkhus, he passes through three hundred seasons: hundred seasons of winter, hundred seasons of summer and hundred seasons of rain…….
…… Oh Bhikkhus, whatever a teacher for his disciples could do, for their benefit, out of compassion, that has been done by me for you.


Support Matters – European artists and prominent personalities stand by project Novi Sad 2021!
Delegation of the project Novi Sad 2021, consisting of: Nemanja Milenkovic, History teacher and MS in Media Management; Darko Polić, PhD Architecture; Vesna Latinovic, English teacher; Milica Rašković, graduate pedagogue and MS in Gender Studies with a specialization in youth work; Lazar Jovanov, PhD in Management, Arts and Media; Vuk Radulovic, MS of Laws; Momčilo Bajac, PhD in Philosophy and Sociology and Tijana Palkovljević Bulgarian, PhD in Art History, devotees to culture and proud citizens of Novi Sad, travelled last night to Brussels to present the final application of Novi Sad for the European Capital of Culture 2021.
The decision on the title will be known on Thursday, and in the final round of the competition beside the most important support, the one coming from the citizens, the eminent artists of the European and world fame also gave their support, of which the last in a series Anica Dobra, Serbian actress who has made a strong mark in Serbian and German cinema. Beside her, his voice to Novi Sad this summer gave the world-famous violinist from Belgrade, who currently lives and works in the United States, Stefan Milenkovic, and most recently, Thomas Wlaschiha , actor from the popular series "Game of Thrones".
In the "Cheering team" of Novi Sad 2021 there are also a composer from New York, Aleksandra Vrebalov, Ukrainian journalist and writer, Oleksandr Veseleny, then Raoul Biltgen, actor and writer from Luxembourg, Jana Navratova, theater, dance and film expert from the Czech Republic, Walter Putschögl – Managing Director of the "Linz 2009 European Capital of Culture" from Austria and Penka Angelova, PhD, Manager in culture and Director of the Association of Elias Canetti Ruse in Bulgaria.
On this impressive list there are also Florina Iris, a writer from Romania, Csobanka Zsuzsa Emese, writer from Hungary, Michail Hvorecki – writer from Slovakia, Dragana Kršenković Brkovic, writer from Montenegro, Lea Jurisic, a choreographer from Slovenia, Konrad Glass, Director of the Central Museum of the Danube Swabians from Ulm, Gloria, Princess of Thurn and Taxis, artist and manager from Germany, originating from the German family of Thurn and Taxis, Christopher Husman, theater expert, manager of the European Danube Academy Ulm, Cornelius Hell – journalist and writer from Austria, Alfred Bradler, painter and sculptor from Germany, Andreja Kopač, a journalist and expert on modern dance from Slovenia, Antonio Flan, writer, essayist and dramatist from Austria, Karoly Mehes, writer and adviser to the project "Pécs European Capital of Culture 2010″in Hungary, Simon Lahner, Director of the Cultural districts of the Upper Austria Vienna, Thomas Kinle, President of the CDU-Fraktion Ulm, Christian Fucher, writer from Vienna and Buda Gyorgy, translator of literary works into German, from Budapest.
Finally, among this prominent figures who supported the candidacy of Novi Sad for the European Capital of Culture there are also Peter Langer, General Coordinator of the Council of Danube Cities and Regions in Ulm, Suzana Maje, Director of the Art School for the young from Germany, Ditmar Herzog, a photographer from Germany, Kinga Tot, poet and journalist from Hungary, Eda Kriseova, writer and journalist from the Czech Republic, Simon Nagy, an artist from Berlin, Ursula Tucka, Director of the Metropolitan Art Club from Austria, Daniel Banulescu, poet from Bucharest, Sebastian Rihm, Director of the Danube Festival in Ulm, and Walter Famler, journalist and curator from Vienna.


text:
using namespace ofxCv;
using namespace cv;

//--------------------------------------------------------------
void removeIslands(ofPixels& img) {
	int w = img.getWidth(), h = img.getHeight();
	int ia1=-w-1,ia2=-w-0,ia3=-w+1,ib1=-0-1,ib3=-0+1,ic1=+w-1,ic2=+w-0,ic3=+w+1;
	unsigned char* p = img.getPixels();
	for(int y = 1; y + 1 < h; y++) {
		for(int x = 1; x + 1 < w; x++) {
			int i = y * w + x;
			if(p[i]) {
				if(!p[i+ia1]&&!p[i+ia2]&&!p[i+ia3]&&!p[i+ib1]&&!p[i+ib3]&&!p[i+ic1]&&!p[i+ic2]&&!p[i+ic3]) {
					p[i] = 0;
				}
			}
		}
	}
}

//--------------------------------------------------------------
typedef std::pair<int, int> intPair;
vector<ofPolyline> getPaths(ofPixels& img, float minGapLength = 2, int minPathLength = 0) {
	float minGapSquared = minGapLength * minGapLength;

	list<intPair> remaining;
	int w = img.getWidth(), h = img.getHeight();
	for(int y = 0; y < h; y++) {
		for(int x = 0; x < w; x++) {
			if(img.getColor(x, y).getBrightness() > 128) {
				remaining.push_back(intPair(x, y));
			}
		}
	}

	vector<ofPolyline> paths;
	if(!remaining.empty()) {
		int x = remaining.back().first, y = remaining.back().second;
		while(!remaining.empty()) {
			int nearDistance = 0;
			list<intPair>::iterator nearIt, it;
			for(it = remaining.begin(); it != remaining.end(); it++) {
				intPair& cur = *it;
				int xd = x - cur.first, yd = y - cur.second;
				int distance = xd * xd + yd * yd;
				if(it == remaining.begin() || distance < nearDistance) {
					nearIt = it, nearDistance = distance;
					// break for immediate neighbors
					if(nearDistance < 4) {
						break;
					}
				}
			}
			intPair& next = *nearIt;
			x = next.first, y = next.second;
			if(paths.empty()) {
				paths.push_back(ofPolyline());
			} else if(nearDistance >= minGapSquared) {
				if(paths.back().size() < minPathLength) {
					paths.back().clear();
				} else {
					paths.push_back(ofPolyline());
				}
			}
			paths.back().addVertex(ofVec2f(x, y));
			remaining.erase(nearIt);
		}
	}

	return paths;
}

//--------------------------------------------------------------
void ofApp::setup() {
	ofSetVerticalSync(true);
	ofSetFrameRate(120);
	ofEnableSmoothing();

    cam.setDeviceID(0);
	camWidth = 640, camHeight = 480;
	cam.initGrabber(camWidth, camHeight);

	faceTrackingScaleFactor = .5;
	croppedSize = 256;
	classifier.load(ofToDataPath("haarcascade_frontalface_alt2.xml"));
	graySmall.allocate(camWidth * faceTrackingScaleFactor, camHeight * faceTrackingScaleFactor, OF_IMAGE_GRAYSCALE);
	cropped.allocate(croppedSize, croppedSize, OF_IMAGE_GRAYSCALE);

	img.init(croppedSize, croppedSize);
	imitate(gray, cropped);
	imitate(cld, cropped);
	imitate(thresholded, cropped);
	imitate(thinned, cropped);

	gui.setup();
	gui.addPanel("Photo Settings");
	gui.addSlider("black", 42, -255, 255, true);        // kyle's 0, 65, 48, 20
	gui.addSlider("sigma1", 0.99, 0.01, 2.0, false);    // kyle's 0.4, 0.85
	gui.addSlider("sigma2", 4.45, 0.01, 10.0, false);   // kyle's 3.0, 4.45
	gui.addSlider("tau", 0.97, 0.8, 1.0, false);        // kyle's 0.97
	gui.addSlider("halfw", 4, 1, 8, true);              // kyle's 4
	gui.addSlider("smoothPasses", 4, 1, 4, true);       // kyle's 2, 3
	gui.addSlider("thresh", 121.8, 0, 255, false);      // kyle's 128, 121.8
	gui.addSlider("minGapLength", 5.5, 2, 12, false);   // kyle's 2, 6.8
	gui.addSlider("minPathLength", 40, 0, 50, true);    // kyle's 20
	gui.addSlider("facePadding", 1.5, 0, 2, false);     // kyle's 1.5, 1.77
    gui.addSlider("verticalOffset", int(-croppedSize/12), int(-croppedSize/2), int(croppedSize/2), false);
	gui.loadSettings("settings.xml");

    gui.addPanel("Print Variables");
    gui.addSlider("Tolerance", 20, 1, 200, true);                             // TOL
    gui.addSlider("Jog Speed", 900, 500, 1200, true);          // DELAY_FAST
    gui.addSlider("Printing LOW delay", 2000, 1000, 4000, true);    // DELAY_MIN
    gui.addSlider("Printing HIGH delay", 50, 10, 100, true);            // HIGH_DELAY
    gui.addSlider("Ink Delay", 7000, 2000, 8000, true);                 // INK_DELAY
    gui.addSlider("Ink Start Delay", 800, 200, 2000, true);             // INK_START_DELAY
    gui.addSlider("Ink Start Steps", 500, 100, 1000, true);             // INK_START_STEPS
    gui.addSlider("Ink Stop Delay", 800, 200, 2000, true);              // INK_STOP_DELAY
    gui.addSlider("Ink Stop Steps", 300, 100, 1000, true);              // INK_STOP_STEPS
    gui.addSlider("Ink Wait", 500000, 100000, 900000, true);           // INK_WAIT
    gui.addSlider("17 turns ink on", 17, 17, 18, true);
    gui.loadSettings("printvariables.xml");

    gui.addPanel("Calibration");
    gui.addSlider("SCALE_X", 62, 50, 125, true);
    gui.addSlider("SCALE_Y", 50, 40, 100, true);
    gui.addSlider("home_x", -100, -256, 256, true);
    gui.addSlider("home_y", -100, -256, 256, true);
    gui.addSlider("Y Height for Pic", 2000, 0, 10000, true);
    gui.addSlider("Z Height for Pic", 2000, 0, 15000, true);
    gui.loadSettings("calibration.xml");

    AT.setup();
    AT.cropped_size = croppedSize;
    AT.start();
}

//--------------------------------------------------------------
void ofApp::update(){
	cam.update();
	if(cam.isFrameNew() && needToUpdate) {
		int black = gui.getValueI("black");
		float sigma1 = gui.getValueF("sigma1");
		float sigma2 = gui.getValueF("sigma2");
		float tau = gui.getValueF("tau");
        float thresh = gui.getValueF("thresh");
		int halfw = gui.getValueI("halfw");
        int smoothPasses = gui.getValueI("smoothPasses");
		minGapLength = gui.getValueF("minGapLength");
		minPathLength = gui.getValueI("minPathLength");
		float facePadding = gui.getValueF("facePadding");
        int verticalOffset = gui.getValueI("verticalOffset");

		convertColor(cam, gray, CV_RGB2GRAY);

        // Save the original image
		string fileName = ofToString(ofGetYear()) + "-" + ofToString(ofGetMonth()) + "-" + ofToString(ofGetDay())
        + " " + ofToString(ofGetHours()) + "." + ofToString(ofGetMinutes()) + "." + ofToString(ofGetSeconds()) + " original.png";
		ofSaveImage(gray.getPixelsRef(), fileName);
		cout << "saved " << ofToString(fileName) << endl;

		resize(gray, graySmall);
		Mat graySmallMat = toCv(graySmall);
		equalizeHist(graySmallMat, graySmallMat);
		classifier.detectMultiScale(graySmallMat, objects, 1.05, 1,
									CASCADE_DO_CANNY_PRUNING |
									CASCADE_FIND_BIGGEST_OBJECT |
									//CASCADE_DO_ROUGH_SEARCH |
									0);

		ofRectangle faceRect;
		if(objects.empty()) {
			// if there are no faces found, use the whole canvas
			faceRect.set(0, 0, camWidth, camHeight);
		} else {
			faceRect = toOf(objects[0]);
			faceRect.getPositionRef() /= faceTrackingScaleFactor;
			faceRect.scale(1 / faceTrackingScaleFactor);
			faceRect.scaleFromCenter(facePadding);
            faceRect.translateY(verticalOffset);
		}

		ofRectangle camBoundingBox(0, 0, camWidth, camHeight);
		faceRect = faceRect.getIntersection(camBoundingBox);
		float whDiff = fabsf(faceRect.width - faceRect.height);
		if(faceRect.width < faceRect.height) {
			faceRect.height = faceRect.width;
			faceRect.y += whDiff / 2;
		} else {
			faceRect.width = faceRect.height;
			faceRect.x += whDiff / 2;
		}

		cv::Rect roi = toCv(faceRect);
		Mat grayMat = toCv(gray);
		Mat croppedGrayMat(grayMat, roi);
		resize(croppedGrayMat, cropped);
		cropped.update();

        // Save the cropped face
		fileName = ofToString(ofGetYear()) + "-" + ofToString(ofGetMonth()) + "-" + ofToString(ofGetDay())
        + " " + ofToString(ofGetHours()) + "." + ofToString(ofGetMinutes()) + "." + ofToString(ofGetSeconds()) + " face.png";
		ofSaveImage(cropped, fileName);
		cout << "saved " << ofToString(fileName) << endl;

		int j = 0;
		unsigned char* grayPixels = cropped.getPixels();
		for(int y = 0; y < croppedSize; y++) {
			for(int x = 0; x < croppedSize; x++) {
				img[x][y] = grayPixels[j++] - black;
			}
		}
		etf.init(croppedSize, croppedSize);
		etf.set(img);
		etf.Smooth(halfw, smoothPasses);
		GetFDoG(img, etf, sigma1, sigma2, tau);
		j = 0;
		unsigned char* cldPixels = cld.getPixels();
		for(int y = 0; y < croppedSize; y++) {
			for(int x = 0; x < croppedSize; x++) {
				cldPixels[j++] = img[x][y];
			}
		}
		threshold(cld, thresholded, thresh, true);
		copy(thresholded, thinned);
		thin(thinned);
		removeIslands(thinned.getPixelsRef());

		gray.update();
		cld.update();
		thresholded.update();
		thinned.update();

        // Save the thinned paths
		fileName = ofToString(ofGetYear()) + "-" + ofToString(ofGetMonth()) + "-" + ofToString(ofGetDay())
        + " " + ofToString(ofGetHours()) + "." + ofToString(ofGetMinutes()) + "." + ofToString(ofGetSeconds()) + " thinned.png";
		ofSaveImage(thinned, fileName);
		cout << "saved " << ofToString(fileName) << endl;

		paths = getPaths(thinned, minGapLength, minPathLength);
		needToUpdate = false;

        // get arduino thread loaded with the paths and started
        AT.lock();
            AT.paths = paths;
            AT.points = paths.begin()->getVertices();
		AT.unlock();
    }
    AT.update();

    // update AT variables
    AT.TOL = gui.getValueI("Tolerance");
    AT.DELAY_FAST = gui.getValueI("Jog Speed");
    AT.DELAY_MIN = gui.getValueI("Printing LOW delay");
    AT.HIGH_DELAY = gui.getValueI("Printing HIGH delay");
    AT.INK_DELAY = gui.getValueI("Ink Delay");
    AT.INK_START_DELAY = gui.getValueI("Ink Start Delay");
    AT.INK_START_STEPS = gui.getValueI("Ink Start Steps");
    AT.INK_STOP_DELAY = gui.getValueI("Ink Stop Delay");
    AT.INK_STOP_STEPS = gui.getValueI("Ink Stop Steps");
    AT.INK_WAIT = gui.getValueI("Ink Wait");
    AT.INK_SLEEP_PIN = gui.getValueI("17 turns ink on");

    AT.home_x = gui.getValueI("home_x");
    AT.home_y = gui.getValueI("home_y");
    AT.SCALE_X = gui.getValueI("SCALE_X");
    AT.SCALE_Y = gui.getValueI("SCALE_Y");
    AT.y_height = gui.getValueI("Y Height for Pic");
    AT.z_height = gui.getValueI("Z Height for Pic");
}

//--------------------------------------------------------------
void ofApp::drawPaths() {
	for(int i = 0; i < paths.size(); i++) {
		ofSetColor(yellowPrint);
		paths[i].draw();
		if(i + 1 < paths.size()) {
			ofVec2f endPoint = paths[i].getVertices()[paths[i].size() - 1];
			ofVec2f startPoint = paths[i + 1].getVertices()[0];
			ofSetColor(magentaPrint, 128);
			ofLine(endPoint, startPoint);
		}
	}
}

//--------------------------------------------------------------
void ofApp::draw() {
	ofBackground(0);

    ofSetColor(255);
    gray.draw(0, 0);
    int y = 0;
    cropped.draw(gray.getWidth(), 0);
    cld.draw(gray.getWidth(), (y+=cropped.getHeight()));
    thresholded.draw(gray.getWidth(), (y+=cld.getHeight()));
    thinned.draw(gray.getWidth(), (y+=thresholded.getHeight()));

    ofPushMatrix();
    ofTranslate(gray.getWidth(), 0);
    drawPaths();
    ofPopMatrix();

    ofPushMatrix();
    ofTranslate(gray.getWidth() + cropped.getWidth(), 0);
    ofScale(2, 2);
    ofPushStyle();
    ofSetLineWidth(3);
    drawPaths();
    ofPopStyle();
    ofPopMatrix();

    AT.draw();
}

int ofApp::getPoints(int steps){
    int points = float(steps) / 100 / 80 * croppedSize;
//    cout << "getPoints: " << points << endl;
    return points;
}

//--------------------------------------------------------------
void ofApp::keyPressed(int key) {
    switch (key) {
        case 'N':
            // if coffee photo is good, press b
            // sends the arm up to start over, ready for a new person
            AT.shootCoffee();
            break;
        case ' ':
            // when the arm is up press space to take a face photo
            // press again until you like it
            needToUpdate = true;
            break;
        case 'p':
            // once you have a good face photo, press p
            // machine will lower and go home then print starts automatically
            // after print machine raises up and takes a coffee photo
//            AT.curState = AT.HOME;
            if (paths.size() > 0) {
                AT.curState = AT.FACE_PHOTO;
            } else {
                AT.curState = AT.NEED_PHOTO;
            }
            break;
        case 'c':
            // take a look at the coffee photo, if it's not good press c
            // retake photo of coffee (or make this happen in spacebar for consistency)
            break;

        // programmers controls
        case 'a':
            // load pattern: 20,400 steps in Y with 500 step X zigs every 500 Y steps

            for (int i = 21; i > 0; i--) {
                int x = getPoints(400);
                if (i%2) { x += getPoints(400); }
                int y = getPoints(i*400);
                ln.addVertex(x + croppedSize, y);
            }
            ln.addVertex(getPoints(2000) + croppedSize, getPoints(400));
            ln.addVertex(getPoints(2000) + croppedSize, getPoints(8400));
            ln.addVertex(getPoints(800) + croppedSize, getPoints(8400));

            paths.push_back(ln);
            AT.lock();
            AT.paths = paths;
            AT.points = paths.begin()->getVertices();
            AT.unlock();
            break;
        case 'R':
            AT.curState = AT.RESET;
            AT.reset();
            break;
        case 's':
            // stop in the middle of a print and reset with same image
            // must manually put machine back at origin
            AT.curState = AT.SHOOT_FACE;
            AT.lock();
            AT.paths = paths;
            AT.points = paths.begin()->getVertices();
            AT.unlock();
        // image1: save the current image
        case 'i':
            ofSaveImage(thinned, "saved_image_io.png");
            break;
        // image1: load the image
        case 'o':
            ofLoadImage(io, "saved_image_io.png");
            io.update();
            paths = getPaths(io, minGapLength, minPathLength);
            AT.lock();
            AT.paths = paths;
            AT.points = paths.begin()->getVertices();
            AT.unlock();
            break;
        // image2: save the current image
        case 'j':
            ofSaveImage(thinned, "saved_image_jk.png");
            break;
        // image2: load the image
        case 'k':
            ofLoadImage(jk, "saved_image_jk.png");
            jk.update();
            paths = getPaths(jk, minGapLength, minPathLength);
            AT.lock();
            AT.paths = paths;
            AT.points = paths.begin()->getVertices();
            AT.unlock();
            break;
        // image3: save the current image
        case 'n':
            ofSaveImage(thinned, "saved_image_nm.png");
            break;
        // image3: load the image
        case 'm':
            ofLoadImage(nm, "saved_image_nm.png");
            nm.update();
            paths = getPaths(nm, minGapLength, minPathLength);
            AT.lock();
            AT.paths = paths;
            AT.points = paths.begin()->getVertices();
            AT.unlock();
            break;
        case '1':
            AT.DELAY_MIN = 500;
            break;
        case '2':
            AT.DELAY_MIN = 600;
            break;
        case '3':
            AT.DELAY_MIN = 700;
            break;
        case '4':
            AT.DELAY_MIN = 800;
            break;
        case '5':
            AT.DELAY_MIN = 900;
            break;
        case '6':
            AT.DELAY_MIN = 1000;
            break;
        case 'q':
            AT.HIGH_DELAY = 50;
            break;
        case 'w':
            AT.HIGH_DELAY = 60;
            break;
        case 'e':
            AT.HIGH_DELAY = 70;
            break;
        case 'r':
            AT.HIGH_DELAY = 80;
            break;
        case 't':
            AT.HIGH_DELAY = 90;
            break;
        case 'y':
            AT.HIGH_DELAY = 100;
            break;
        case 'h':
            // for debugging
            AT.goHome();
            break;
        case OF_KEY_RIGHT:
            AT.jogRight();
            AT.curState = AT.JOG;
            break;
        case OF_KEY_LEFT:
            AT.jogLeft();
            AT.curState = AT.JOG;
            break;
        case OF_KEY_UP:
            AT.jogForward();
            AT.curState = AT.JOG;
            break;
        case OF_KEY_DOWN:
            AT.jogBack();
            AT.curState = AT.JOG;
            break;
        case OF_KEY_HOME:
            AT.jogUp();
            AT.curState = AT.JOG;
            break;
        case OF_KEY_END:
            AT.jogDown();
            AT.curState = AT.JOG;
            break;
        case OF_KEY_PAGE_UP:
            AT.plungerUp();
            break;
        case OF_KEY_PAGE_DOWN:
            AT.plungerDown();
            break;
        default:
            break;
    }
}

void ofApp::exit() {
    AT.stop();
    ofSleepMillis(1000);
}

redpajama_set_name: RedPajamaGithub


Think You Know Construction Financing? The World Has Changed!" Rick Zimmer will explain how!
ZCC wishes you and yours a Happy and Safe Labor Day with a little humor.
Zimmer Construction Consultants has been chosen to review Payment Applications and Construction Quality for the $60 million renovation of the luxury Fisher Island Club.


#1 Superman fans, here is a keychain to safeguard your keys!
#2 It is the easiest way to take Liverpool FC with you!
#3 Are you a serious Hulk fan? This incredibly cool Hulk fist keychain is just for you!
#6 For those who are obsessed with Game of Thrones!
#7 Eagles do not mix with other birds and love to fly at higher altitudes. This keychain is for people who have similar characteristics.