Statement in Solidarity with Clients of Transgender Health Empowerment, Inc.
Transgender Health Empowerment (THE) has had to dramatically curtail their services due to financial difficulties, as reported today in the Washington Blade. This reduction happened very suddenly, and services trans community members depend on have been abruptly cut off. Immediate action must be taken to ensure THE clients get services they need to ensure continuity of care. THE has provided essential services to DC trans communities since 1996, and without these services many trans people and LGBTQ youth will be left without access to vital housing and health care services. DCTC stands with THE's clients and calls on DC Government,as THE's primary funder, to act quickly to make sure that necessary services continue. DC's trans communities face significant health disparities, and we must take collective responsibility to ensure that those needs are addressed.
Lakiesha Washington poses with the judge's order that the John L Young shelter be open to transgender women.
A DC transgender resident named Lakiesha Washington, Transgender Health Empowerment (a drop-in center for LGBT people), and DC Trans Coalition have won a major victory for transgender homeless people.
Washington, and the lawyer representing her–DC Trans Coalition member Jeffrey Light–negotiated with New Hope Ministries through this last week that New Hope would agree to a Temporary Restraining Order allowing Washington (and all transgender women) into the shelter. Furthermore, New Hope Ministries has arranged to give its staff transgender sensitivity training (as put on by Transgender Health Empowerment's Earline Budd, and the Mayor's Office of GLBT Affairs), and improve the privacy of its bathroom and shower facilities so that no one will be outed on the basis of their genitalia.
DC Trans Coalition member Andy Bowen, who filed an Office of Human Rights complaint about John L Young in February 2013, will withdraw her complaint, which had just entered the mediation and investigation stage.
For more information, contact Andy Bowen at andymbowen [at] gmail [dot] com.
DCTC will host its bi-monthly meeting at 7:30pm in the Austin Center at Whitman-Walker Health, 14th & R Streets NW. Get updates on our needs assessment project, our work regarding the police and jails, and help us create our upcoming community forum on December 3 (stay tuned for details). Plus much, much more! Anyone who wants to fight for justice is welcome to attend.
We've teamed up with TLGB Police Watch and a number of other local organizations for Trans Day of Action. Join us at 1:00pm for a rally in front of Metropolitan Police Department Headquarters, 300 Indiana Avenue NW. We'll proceed from there to the US Attorney's Office, at 555 4th Street NW. Check out our goals and demands for the mayor, the police chief, and the US Attorney, and feel free to share details with your friends on Facebook.
Please join us for the annual Transgender Day of Remembrance service, organized by Transgender Health Empowerment, at 5:00pm at the Metropolitan Community Church, 474 Ridge Street NW. We've lost at least two members of our community to violence this year, and many more have been injured. Help us to honor their memories.
After a brutal summer, we are excited to share some positive results from our collective struggle to improve the lives of trans folks in the District. After talks between trans advocates and D.C. Mayor Gray, 21 trans individuals are participating in Project Empowerment's pilot program to combat transphobic discrimination. NPR has an in-depth look.
DCTC is doing all we can to support the participants and make it a success. We are very excited to be part of this ground-breaking effort to address unemployment in our communities, and we hope the District will continue to fund similar potentially life-saving resources.
We just passed a major hurdle toward receiving funding so that we can begin Phase Two. Our Needs Assessment Working Group is in the process of designing the paper survey that will soon be distributed. If you'd like to help out, they meet on the second and third Tuesdays of the month. Click here to learn more.
In case you missed it, be sure to check out the critically important results from our community roundtable discussions at the Phase One Summary Report.
DCTC members recently attended the first ever meeting of the D.C. Department of Corrections Transgender Advisory Council, a new body meant to increase transparency and community oversight into how the DOC is handling trans inmates. We will have more updates shortly!
A Corrections officer is currently being investigated for issuing death threats against two trans women. We are following this case closely.
DCTC is continuing to work with community members in response to the many recent instances of violence involving trans women and/or motivated by transphobia. Click here, here and here to see media interviews with DCTC members.
Adding to our fears that the string of murders was motivated by bias, the makeshift memorial to Lashai Mcclean that was left at the site she was murdered (and near where two other trans women were shot weeks later) has been burned.
The death of Gaurav Gopalan was recently ruled a homicide.
An arrest was made in the shooting of a trans woman in Southeast.
We are working with our allies at Transgender Health Empowerment and elsewhere to organize this year's Trans Day of Remembrance and other events around November 20th. If you'd like to help, watch for an announcement about the next TDOR Planning Meeting.
Members of DCTC have recently attended early meetings with other community organizations who are working to create a new coalition called TLGB Police Watch.
We maintain regular communication with the Metropolitan Police Department to express our concern about transphobia in MPD. We want to make sure that officers are being properly trained, and we want MPD to take the recent crimes against trans people seriously.
We are preparing to conduct another round of training for the Gay & Lesbian Liaison Unit.
We continue to monitor the legal case against Officer Furr, who recently shot at a group of trans people and their friends while off-duty.
As is now well known, our communities suffered more violence over the weekend. Most recently, we were alerted by the Metropolitan Police Department at about 3:15am Monday morning of a trans woman who was non-fatally shot on the 2300 block of Savannah Street SE and had been transported to a local hospital. The victim had met up with her assailant, whom she had known previously, and they got into an argument in his truck, at which point he fired a shot at her, which grazed her neck. The victim was able to walk into 7th District police headquarters to seek assistance. Yesterday, MPD arrested the assailant, Darryl Willard, and he was charged with Assault with Intent to Kill While Armed. We will keep you posted as this case moves through the courts.
Flowers left on 11th Street NW where Saturday's victim was found.
Earlier in the weekend, at around 6:10am Saturday morning, we were informed by MPD that a body had been discovered at 11th & Fairmont Streets NW in Columbia Heights. According to MPD, the deceased person was believed to be a Latina trans woman. DCTC members arrived at the crime scene within an hour, and received an update from MPD's Gay and Lesbian Liaison Unit. Throughout Saturday morning and again later that evening, several Latina trans community members made phone calls and went door to door in Columbia Heights checking on friends and acquaintances and trying to track down anyone who could not be reached. Around 9:00am on Sunday, DCTC member Ruby Corado was presented with a photo of the deceased by MPD homicide detectives, but was unable to make an identification. The case is being investigated as a suspicious death, and the DC medical examiner has been unable to determine a cause of death.
On Monday afternoon, MPD Assistant Chief Peter Newsham held a press conference focused on these two cases, and released a photo of Saturday's victim taken by the medical examiner. Throughout the press conference, Newsham persistently referred to the deceased as "he" and "a possible transgender male" and used phrases like "he was wearing make-up" and "feminine clothing." While it is likely impossible for anyone to ever know the victim's true gender identity, it is important to note that DC's Human Rights Act, which is supported by MPD's general order on handling trans people (general order 501.02), also mandates respect for a person's gender expression. Given the many unknowns surrounding the victim's death and identity, Newsham — like all officers — should have chosen gender neutral pronouns and should understand the difference between a trans man and a trans woman. We believe that Newsham's reckless language represents a violation of MPD's General Order 501.02 and its mandate to be respectful of gender identity and expression, and we will be raising that with both MPD and the Mayor's office.
Within a day after the autopsy photo's release, a member of DC's South Asian LGBT community came forward and identified the victim, who is of Nepalese descent. As noted above, MPD's initial belief was that the person was possibly Latino, which on Monday was expanded to also include possibly of Middle Eastern descent. This raises obvious questions about assigning a racial identity based solely on appearance. Further, the improperly assigned race in this case almost certainly contributed to the four-day delay in identifying the victim, and definitely caused intense fear within the Latina trans community. We understand that members of KhushDC have expressed that they will be planning a remembrance for the victim, we will keep you posted on details as they become available.
We also want to acknowledge statements made to the media by DC Mayor Vince Gray and DC Council Chairman Kwame Brown expressing their concern over the extreme violence our communities have faced this year. We look forward to working with them to take concrete action to prevent such violence inthe future.
As always, if you have been a victim of violence, or if you know someone who has, you can reach out to us at 202.681.3282 or email dctc@dctranscoalition.org. You can also reach out to Transgender Health Empowerment at 202.636.1646 or HIPS via their 24-hour hotline at 1.800.676.HIPS. If you need police assistance, dial 911 or call the Gay and Lesbian Liaison Unit at 202.506.0714.
1) The Gray Administration is committed to expand cultural diversity training across District Government with a focus on LGBT and specifically transgender cultural competency.
a. The Mayor has directed DC Department of Human Resources, The Office of Human Rights, and The Office of GLBT Affairs to begin working on the development of a training module that the administration will pilot and make mandatory for all District Government employees upon full implementation. The Mayor has asked for the training module to be in place for implementation planning by October 1, 2011.
2) The Department of Employment Services will run a pilot of their transitional employment program targeting members of the transgender community. The program includes six weeks of training coupled with subsidized paid employment.
a. DOES will have the pilot run of the transitional employment program targeting members of the transgender community ready for implementation by September 5, 2011.
b. The Office of GLBT Affairs will work with DOES to ensure there is community engagement in the development and implementation of the pilot program.
We are excited to see such positive progress, and look forward to holding the Gray Administration accountable to these promises. The groups will reconvene in the future to continue the on-going dialog on how to address barriers to trans employment. We also hope that future discussions will include voices from a broader range of stakeholders.


text:
Could khabib beat Maia?
Khabib right now (Conors PPV numbers)
Conor doesn't want to fight Khabib ever again
By Jacob Debets	Dec 12, 2019
On a night with no shortage of wicked submissions, come-from-behind wins and divisional implications, Saturday night's UFC on ESPN 7 event was marred by two conspicuous and consecutive miscarriages of justice on the event's main card.
The first occurred in the Stefan Struve-Ben Rothwell heavyweight affair, where the "Skyscraper" absorbed two devastating low blows over the course of two rounds, which twice had the dutchman writhing on the canvas in agony. Struve, who walked into the Octagon carrying a 1-3 record in his last four fights just a few months removed from a short-lived retirement, looked to have serious reservations about whether he would be able to continue after copping the second errant kick. After exchanging some words with referee Dan Miragliotta -- during which the official appeared to encourage Struve to continue as he was "winning the fight" and Rothwell would lose a point -- he opted to continue; 73 seconds later he was stopped by strikes.
The second instance happened in the co-main event, where Marina Rodriguez and Cynthia Calvillo fought to a majority draw. The bout was held at a catchweight of 120.5 pounds after Calvillo blew the strawweight limit by half a weight class, with the Californian being outpointed on the feet in rounds one and two only to score a 10-8 round in the final stanza courtesy of chain wrestling, submissions attempts and some scary ground-and-pound.
In both the heavyweight and strawweight features, the victor's win was irreducibly connected with their failure, whether deliberately or otherwise, to adhere to the rules. Rothwell seemed well on his way to catching his fourth straight "L" on the scorecards before desperation kicked in and he hunted a compromised Struve down; whereas it's hard to imagine Calvillo's grappling didn't benefit from the extra four and a half pounds, or that she'd possess that last-ditch durability if she'd gotten her body down to 115 (the weight class she insisted on competing at).
Rothwell and Calvillo will be reminded by the fanbase of their ostensible lack of scruples, but the clear victims here are their adversaries. Struve is likely only one more loss away from being released from the UFC, and Rodriguez's otherwise impressive title campaign at 115 has been temporarily obstructed.
Many will hold that Struve and Rodriguez made their own bed -- Struve could have bowed out and taken the "DQ" and Rodriguez could have turned down the Calvillo bout after she blew the scales. But that argument ignores the economic and cultural architectures which penalize exactly those kinds of decisions.
Most significantly, a withdrawal at either juncture would have serious financial implications for the two principals. Struve would have missed out on the opportunity to double his pay check courtesy of his win bonus, and Rodriguez would have spent six weeks ringing up costs in camp only to pull out and likely forego being paid at all. These decisions would undoubtedly be attended by criticism from fans for the myopic charge of "taking the easy way out," and you can bet the matchmakers would hold it against them in the future -- especially in relation to Rodriguez, who was competing in the co-main event slot for the first time in her UFC career.
These are no-win decisions the UFC has calculatedly forced onto fighters, both as a crude means of cutting costs and of reinforcing the insecurity and fear that makes them pliable subjects. From way back in the early 2000s, when Dana White would remind fighters that he "cut a champion" in B.J. Penn for (perfectly legally) courting offers from other promotions, to the present-day where WMMA pioneer and two-time title contender Liz Carmouche received her walking papers in the midst of doing (unpaid) promotional work for the company during fight week, fighters are made constantly aware of their expendability.
So yeah, Calvillo should never have been competing at strawweight given her ostensible inability to make the weight, and Rothwell should have been more alive to the fact that when you fight someone who's seven feet tall, your body kicks will need to aimed a little higher than with your average heavyweight.
However, the real bad guy in all of this is the promotion whose ethos is forcing its athletes into that exact position; right between a rock and a hard place.
Jacob Debets is a law graduate and writer from Melbourne, Australia. He is currently writing a book analyzing the economics and politics of the MMA industry. You can view more of his writing at jacobdebets.com.
Fight Facts: UFC on ESPN 7

redpajama_set_name: RedPajamaCommonCrawl


Previous investigations have suggested that high-dose methotrexate with leucovorin rescue is a potentially useful strategy for overcoming antifolate resistance. Interactions between methotrexate (MTX) and leucovorin and their respective metabolites appear to occur at multiple intracellular sites, including dihydrofolate reductase (MTX/MTX polyglutamates versus dihydrofolate) and other folate-dependent enzymes (MTX polyglutamates versus reduced folate substrates). The present studies were designed to test the ability of dihydrofolate to compete with methotrexate and methotrexate polyglutamates for dihydrofolate reductase activity using an intact human breast carcinoma cell line (MCF-7) as the model system. Exposure of the breast cells to methotrexate for 24 h resulted in a concentration-dependent formation of methotrexate polyglutamates that markedly exceeded the dihydrofolate reductase-binding capacity for up to 24 h after the removal of drug from the growth media. Under these conditions of dihydrofolate reductase inhibition, we found that tritium-labeled dihydrofolate was capable of competing with methotrexate and its metabolites for dihydrofolate reductase activity as evidenced by the appearance of tritium-labeled reduced folates in the treated cells. We found the interaction between dihydrofolate and methotrexate to be dependent on the exposure concentrations of both methotrexate and dihydrofolate. These studies provide direct evidence that competition during leucovorin rescue occurs at the level of dihydrofolate reductase between methotrexate polyglutamates and dihydrofolate polyglutamates in intact human cells.
↵1 To whom requests for reprints should be addressed, at Building 10, Room 12N226, National Cancer Institute, Bethesda, MD 20892.


Instagram photography tips! How to shoot streetstyle photography shots. Charles Carter and his buddy Luke Franks decided to get together and share a few photography tips on how to shoot streetstyle shots for Instagram! If you love following fashion and streetstyle feeds on Instagram but aren't quite sure how to recreate those streetstyle type of shots then this is the video you need!
We share 4 photography tips on how to shoot and model for streetstyle photography on Instagram. Hopefully this will help you guys up your photography game and learn to recreate lifestyle + streetstyle shots that you see on your Instagram feed!


text:
A szárcsa (Fulica atra) a madarak osztályának darualakúak (Gruiformes) rendjébe, a guvatfélék (Rallidae) családjába tartozó faj. Népi megnevezései: hóda, tikhódas, sárcsa, sárcza, szacskó.

Előfordulása
Európában és Közép-Ázsiában költ, Afrikában, Dél-Ázsiában és Ausztráliában előfordul, illetve telel.

Sikvidéki tavakon él, a hegyvidéket kerüli.

Megjelenése
Testhossza 36–38 centiméter, szárnyfesztávolsága 70–80 centiméter, tömege 600–1000 gramm.
Szeme világospiros, csőre és homloklemeze vakító fehér. Ez a homlokpajzs, ahol a bőr pikkelyesen szaruszerű, az ivari ciklusban megnagyobbodik. Lába ólomszínű, sarkánál pirosas sárgászöld. A tolla fekete. Ujjain bőrlebenyek vannak az úszás elősegítésére.

Jellegzetes "piksz-piksz" kiáltásairól és ugatásszerű hangjáról távolról felismerhető.

Életmódja
Bukómadarakkal rivalizál, több méter mélyre is leúszik táplálékáért. Hosszas, csapkodó vízfelszíni nekifutással emelkedik a levegőbe, vonuló madár. A be nem fagyó tavaknál áttelel. Halastavakon komoly károkat okozhat a vízinövényzetben.
Vízi rovarokkal, halakkal, férgekkel és puhatestűekkel táplálkozik.

Szaporodása
A vízre, nádasba nádból épített fészkében, 7-9 tojásán 21-24 napig kotlik. A fiókák fészekhagyók és kikelésük után nem sokkal követik anyjukat a vízbe.

Védettsége
Magyarországon vadászható faj.

Képek

Jegyzetek

Források

 Az MME Monitoring Központjának adatlapja
 Brehm: Az állatok világa

Külső hivatkozások
 Képek az interneten a fajról
 Ibc.lynxeds.com - videók a fajról
 Xeno-canto.org - a faj hangja

Fulica
Madárfajok
A Kárpát-medence madarai
Magyarország madarai
Románia madarai
Vadászható fajok Magyarországon

redpajama_set_name: RedPajamaWikipedia


Place tortilla on cookie sheet and preheat oven 375 degrees. Spread 2 tbsp pizza sauce and add the toppings you like on pizza (vegetables, pepperoni, mushrooms, ham, etc. Top with 1/4 cup Mozz cheese and bake for 5 min and then turn oven on low broil to brown edges of tortilla and make it taste more like crispy crust. Enjoy!


A day for teachers, parents and volunteers with an interest in developing their school garden program, promoting biodiversity and creating learning landscapes that provide a wealth of learning and play opportunities for children of all ages and abilities.
If you do not receive the VSGP enews directly, you will need to ring the NGIV office on 9576 0599 to obtain log-in details to book. Please have your credit card ready.


Character traits are used to describe how characters act in a given situation and illustrate the type of person they are for your reader. Writing characters with a strong, well-defined set of traits will catapult them off the page and into your reader's minds and hearts.
In fact, these personality elements are so critical that I usually begin development of a persona with a handful of adjectives I feel most clearly represent my character's demeanor. These details can focus on the good, like benevolent or clear-headed, or lean to the negative, like cowardly or miserable. Remember, in life no one is entirely good or entirely bad, so if you want characters to feel real, it's a good idea to mix them up a bit.
I tend to start my list of character traits with an odd number of descriptors. That way, if I'm writing about a mostly positive person, I structure their basic personality with two or four positive traits then throw in one or two negative ones to add balance. For example, here's a list for Dorn, a character from my fantasy novel whose character traits trend positive.
Notice the two negative ones I added in are magnifications, or reversals, of some of his positive traits. For example, in the story he's a real rule-follower and has a reputation for integrity and honesty. But sometimes doing the right thing requires bending the rules, and that's when his law-abiding nature becomes rigid and inflexible. Same thing with his character traits of compassion and kindness; he can go too far and overwhelm other characters with his need to care for them.
Some writers feel traits should be in balance, that is, for every positive, a negative. I disagree. I've never met anyone in real life that had an equal number of bad character traits to good ones. Something about that ratio seems contrived and forced. I also think this type of balance would make it difficult to determine what a character would do in an extreme situation, since they are neither mostly good nor mostly bad.
It's easy to think of common traits like loving, evil, grumpy, biased, or playful. Sometimes, though, pinpointing more precise traits can help you flesh out your character's personality more fully. The more detailed you can get, the clearer you can write. Here are links to my favorite character trait lists. See what you can interesting traits you can find for your next character!
As you can see, Tayvar might be a handful to control at times. But it turns out that when the chips are down, he's able to pivot effortlessly and maneuver through a crisis because he doesn't have any preconceived notion of rules and he's willing to think on the fly. His impulsiveness becomes bravery and his rebellious nature inclines him to be creative and resourceful.
Got any characters you need to create? Try this formula and let me know how you like it.


text:
@interface PodsDummy_Pods_Spotify2AppleMusic : NSObject
@end
@implementation PodsDummy_Pods_Spotify2AppleMusic
@end

redpajama_set_name: RedPajamaGithub


May 9, 2016. for a young person. Instead, the cards are stacked up against drivers aged 17- 25. 10 of the cheapest new cars to insure for new drivers. Seat Mii S 1.0 – £. Go online and get some quotes to compare. The more time you.
Jan 5, 2013. How younger drivers can beat the car insurance trap – and even drive a. iKube is aimed specifically at 17-25 year-olds, who don't often drive between. companies that they drive their car more than their son or daughter.
On average, 17-year-old drivers pay $5403 a year for car insurance. Get Car Insurance Quotes · Find Insurance By State · Find Insurance By. In an experiment to determine which car insurance company was the cheapest for teens, we. Keeping a clean driving record for your son or daughter is an absolute necessity.
Recent data indicates that only 5% of drivers pay less than $50 a month for car insurance. about impressing my peers ans just dated girls who interested me. But man, that is so hard for a 16 or 17.
Monday 13 th August 2018 9:30am: School of Rock – Performance 4 Day Workshop Our summer workshop for 8-16 year olds is inspired by.
Compare cheap car insurance quotes for 17 year olds. Reducing the price of car insurance for 17 year olds Car insurance for new drivers can be expensive.
Jul 10, 2018. Find out how much car insurance for 17-year-old driver is, plus advice on what coverage to buy. Cheap car insurance for a 17-year-old girl. Search:. Compare car insurance quotes from multiple insurance companies.
We are lucky enough to buy our twin 17-year-old girls a new car for their. I've just passed my practical test and every insurance quote I've had is over £1000.
Low insurance premiums can save you hundreds, so here are the cheapest. of the vehicle is just the tip of the iceberg – often the cost of cover for a year will far. As you would expect, every car in this list of the UK's cheapest cars to insure is.
Aug 12, 2017. Adding a 17-year-old to your main policy can be pricey, Driving a hard bargain. finding cost-effective insurance for a teenager. The traditional solution was that a parent would simply add their son or daughter to their own policy. in some details and get a quote, or ring round a few of the companies.


text:
Home Gadgets National Planning Workshop on ODF Plus and Water Conservation held in Delhi
National Planning Workshop on ODF Plus and Water Conservation held in Delhi
The Union Minister for Jal Shakti, Shri Gajendra Singh Shekhawat addressing at the launch of the "Jal Shakti Abhiyan", a new Pan-India Scheme, in New Delhi on July 01, 2019. The Minister of State for Jal Shakti and Social Justice & Empowerment, Shri Rattan Lal Kataria, the Secretary, Ministry of Jal Shakti, Shri U.P. Singh and the Secretary, Ministry of Drinking Water and Sanitation, Shri Parameswaran Iyer are also seen.
Solid Liquid Waste Management Dashboard, ODF-Plus& Swachh Gram Darpan Mobile Application launched
With over 5.6 lakh villages, 622 districts, and 30 States/UTs declared Open Defecation Free (ODF) in rural India under the Swachh Bharat Mission (Grameen),Department of Drinking Water and Sanitation (DDWS), Ministry of Jal Shaktiorganized a two-day National Planning Workshop on ODF Plus and Water Conservation from July 12-13,2019 in New Delhi. Secretaries-in-Charge of Sanitation, Mission Directors and other key state-level officials from 29states/UTsattended the workshop.
Speaking at the occasion, Shri Rattanlal Kataria, Minister of State, Ministry of Jal Shakti, said, "In 2014, the Prime Minister introduced the Swachh Bharat Mission (SBM) and now, because of people's contribution, we are moving towards the 100% success of this Mission in October 2019. Moving on to the Jal Shakti Abhiyan, just like SBM, we aim to make the Jal Shakti Abhiyan a successful Jan Andolan, with the help of the people".
The Minister of State then launched the Solid-Liquid Waste Management (SLWM) Dashboard, ODF-Plus Advisory, and the ODF-Plus & Swachh Gram Darpan Mobile Application to foster healthy competition between States and districts undertaking ODF-plus activities.
The Workshop was organized around five thematic technical sessions: Biodegradable Waste Management in Rural Areas, Plastic Waste Management in Rural Areas, Grey Water Management in Rural Areas, Fecal Sludge Management (FSM) in Rural Area and Water Conservation & Rain Water Harvesting respectively. As part of the workshop, an exhibition was also held at ICAR Campus, Delhi, demonstrating various initiatives under ODF-Plus and field visits were conducted with all the participants to highlight the importance of water conservation.
Shri Parameswaran Iyer, Secretary, DDWS, Ministry of Jal Shakti, drew attention to four important intervention areas namely water conservation, source sustainability, piped water supply and greywater management. Speaking at the occasion, he said, "Sustaining the momentum attained through ODF will be our focus and something that we will together work towards. We will scale up Solid and Liquid Waste Management with special focus on greywater management. We have come a long way and it has been possible because of all the people who came together to make SBM a Jan Andolan".
A highlight of the workshop was an interaction with Shri Ayyappa Masagi, Founder and Director, Water Literacy Foundation who presented different methods for rainwater harvesting, collection and water conservation. He spoke of the importance of Grey Water Management and called it as effective as rainwater harvesting for water conservation. He presented Karnataka's case of ensuring rainwater harvesting, which can be replicated in other states to conserve water and secure a better future for the nation.
The workshop also included presentations and technical sessions from esteemed experts and key stakeholders in the field: Shri. Shrikant Navrekar, LWM Expert, WorldBank; Dr. Sudhir Jain, Deputy Commissioner of Rural Development, Madhya Pradesh; Dr. Rajesh Biniwale, Principal Scientist, NEERI, Nagpur; Ms. Avni Lavasa, Deputy Commissioner, Leh District, J&K; Dr. Neelam Patel, Principal Scientist, IARI, ICAR; Shri. Sanjay Marwaha, Regional Director, Central Ground Water Board (CWGB), Union Ministry of Water Resources; and Shri Umakant, Joint Secretary (Watershed Management), Dept. of Land Resources, Ministry of Rural Development.
Jal Shakti
Previous articleFitness model Pranav Saini is an inspiration to people to be the best version of themselves
Next articleFashion creator Sonali Singh's journey of success will encourage you
Drone use permission to Indian Institute of Sugarcane Research for field trials
Suman Munshi - March 11, 2021 6:05 pm 0
NITI Aayog's Atal Innovation Mission releases the Atal Tinkering Lab Handbook on eve of National Youth Day
KABIL Set up to Ensure Supply of Critical Minerals
August 2, 2019 11:33 am
Mega health camp by All India Naba Chetana
Antara Tripathy - January 18, 2019 11:15 am 0
Drivers Training for Safe Driving in India
Suman Munshi - July 25, 2019 9:35 pm 0
Indian Film Exporters Association renamed as Entertainment Content Owners Association of India (ECOA)
Suman Munshi - September 8, 2021 5:46 pm 0


All Things Cahill - The online home for Mark Cahill, and indeed, all things Cahill!
Wow, just when I'd thought the way forward in online web publishing was to get rid of "blocks" WordPress brings them back. Not utterly thrilled with that, on first glance, but hey, at least we now we've got a better representation of what the content will truly look like when published, before we hit the publish button.
Another interesting feature is the block option dropdown on the block itself (the jury is out on whether this should have been on the right margin block menu in my mind, but hey, it is where it is). This menu gives you neat things like the ability to duplicate a block, add to "Reusable Blocks" and "Remove Block".
So how about adding a different block type?
Now you'll have a menu full of different predefined blocks. Embeds like Vimeo, Soundcloud, Meetup, etc., widgets for whatever widgetized plugins you've got, formatting, layout, as well as any custom blocks you've stored.
A word of advice. Working with images, I like to float text next to an image. It took me a little while to figure out the process here.
From previous block, hit enter.
To the right side of the new block click the image icon and import.
Choose a size, like medium in the block properties menu on the right side margin.
Choose your alignment (right) at the top of the image block.
Now click the image block and two blue dots will appear.
You will now be in the paragraph block to the left.
I've been saying for a decade that WordPress was not a blogging system, it is a content management system. This change brings a whole lot more functionality to the product and makes it a much more professional system. It is more complex, but they have done a good (but not great) job of providing an easy path for less skilled users to follow to get up to speed.
The thing Gutenberg does very well is it provides developers a way to more easily work with the system to develop cool functionality. It seems much more straight forward, and I'm excited to develop some new functionality to see how it really works. For now, there's still a lot to learn.
I just added a post about maintenance plans for small business websites on my business site, CahillDigital.com. If you own a site, you definitely need to read this one.
Let me say this clearly: your website is often the first place customers go before they call you. What do you think they do when they see a broken website?
Update software and plugins regularly. If not monthly, certainly quarterly.
Keep your information up to date – do a monthly check that your info is correct.
Check that all means of contact through your website work – check all forms are properly submitting, emails are being received, etc.
Know when your domain expires and be sure it renews well ahead of time.
One of the things I love about my job is getting to know small business owners and finding out how their businesses work. It never ceases to amaze me the interesting niches so many of you have found and the interesting clienteles you serve.
When I started in business there were tons of businesses named "AAA Construction", or "AAAA Window Treatment". Business owners did this because they wanted to be sure they came up first in the Yellowpages. The difference between first position and 8th position on the page could be THE difference in their business.
Today we have a similar problem. While customers don't actually pick up the yellow pages anymore, they do go to Google, and in a lot of ways they use it exactly like they used to use the Yellow Pages. Think about it, how would you find a septic pumping service? You'd probably go to Google and type "septic pumping".
Google might help you out with a few local results, but I think most of us would then go to a better search "septic pumping Sutton Massachusetts" in my case. That is most likely going to give me a list of people who do septic pumping in Sutton.
An interesting thing happens though. While Chase/Harris Septic is located in Sutton, the first company with a search result is Wayland Septic. Wayland is about 45 miles from here. Why is that? Because Wayland Septic has spent the time to optimize for the keywords "Septic pumping Sutton MA" via this page.
The local company is showing up #7 on that search page. Does that affect their business? Do you think Wayland Septic is getting more business due to their search position?
Dog Grooming Worcester, MA – See Dog DayzGrooming is either 1 or 2 in the actual organic listings (there may be a directory site or two above).
Buy Carnival Glass – this is a tough worldwide market with thousands of competitive sites – but CarnivalGlass.com comes in at #2. right after EBay.
Now think about what other terms your customers might be using to try to find you, and instead may be finding your competitors. Are you missing out?
If you own a small business, and haven't optimized your site for local search, you're missing out on business. Contact me and I can get your phone ringing with new business.
Together with Steve Salloway of Davis Advertising, I launched Virtual Ad Club today. The site is an online community for advertising professionals, inspired by the old meatspace group, the Worcester Advertising Club.
The site will cover general advertising, account services, martech and media ends of the business, as well anything else that generally fits under the general category of advertising.
The site is a WordPress backend, with BBPress forums attached. This is the first time in a while I've worked with BBPress and I must say it has come a long way. I'm not certain it's everything vBulletin was, but I think in this case it's going to fit the bill nicely.
As a bonus, I'll be writing the occasional bit on martech, which I'm really looking forward to.
If you're an advertising professional, Virtual Ad Club is the place for you!
Google, the gift that keeps on giving.
Like that kid that reminds the teacher she didn't assign any homework before the long weekend, Google again costs website owners money and wastes their time. So now site owners like me need to migrate a WordPress site from http to https. What are we to do?
Google announced some time ago that their Chrome browser would start marking all sites that do not use the https protocol. as insecure this July. Further, SearchLand has been reporting that for sometime Google's top search results have returned more than 50% https sites. In other words, their algorithm is favoring HTTPS sites.
For site owners, this means they'll likely need to buy SSL certificates, install them, and convert, then debug, their sites to get the coveted padlock showing in the Chrome browser.
In a word, this really stinks for owners of large, non-ssl sites. Like me.
You see, back in the day, we said SSL was only required if you were doing ecommerce and we built our sites accordingly. Hence we've got massive sites like Reel-Time.com that have gig upon gig of content laden with possibly externally linked images, that won't pass for HTTPS.
So how do you migrate a WordPress site from http to https?
I should note here, the problem is external images, not adding the cert.
Ignore it and let Google make an example of you.
Hire an outsourced team of monkeys to manually find download and replace the images and hope they don't screw up.
Hire a real engineer to do the migration programmatically.
I was able this morning to update AllThingsCahill.com to use the new protocol, and was able to get a script to move the images and rewrite the links in my wordpress setup. That's a big thing, as the site had over a thousand posts, with a similar number of images that had been linked from around the web. As you'll see, I've now got the padlock showing next to the URL in the browser. Then I did the same thing for CahillDigital.com and this afternoon I've got two more sites on tap.
I haven't been doing a lot of freelance over the past couple years, but I have just finished a great site called CarnivalGlass.com – a WordPress site with Woocommerce Paypal Adaptive integration.
The site is built on WordPress, using the venerable Woocommerce ecommerce engine for shopping cart. The site functions as a marketplace, so payments are setup to go directly to different owners, using a neat Woocommerce with Paypal Adaptive integration. It's also making use of the USPS API to pull real time shipping prices.
The Woocommerce Paypal Adaptive integration allows the site to take payments and provide a portion of the sale price to the site, and deposit directly into the account of whichever seller owned the piece. Basically a marketplace. with a multitude of sellers, but without the hassle of disbursing payment manually.
Challenges on the project included some issues with shipping classes from the post office, basically Woocommerce was grabbing the first price it saw, instead of the preferred Priority Mail 2 Day price. Another major issue was our need to reconfigure the search function to return specific results, rather than the standard "fuzzy" results.
I had the wonderful opportunity to guest lecture at Emerson College this week on the subject of "Self-publishing". It caused a bit of retrospection, it being a full year now since I published Blue Ice.
That really gets right to the core of the matter. Personally, if there were a publisher who was willing to offer an acceptable deal, I'd definitely go with them. Two words: "Marketing Budget" strike true with me. I don't miss having to deal with an agent, having to respond to publishers, etc. and wonder if anything was going to happen. I do miss having someone who will actually handle the marketing. Someone who can run ads, etc.
As a new writer, the first and most important task is to get your name and your book out there. To build readers, to find a market. Who better to do that than a marketing department.
Find an editor you can work with and hang on to them. Pay them well, they're an important team member.
Hire a real professional copy editor.
Find the best graphic designer you can and pay for your cover design. REALLY – books are judged by their covers, and you're not going to get anyone to read your book if you've got a crappy cover.
Seriously consider putting your book into the Kindle Select program – it will make it available for free reading to Kindle Prime users, and you'll still get paid $2.99. More eyeballs is a good thing.


It isn't often that we hear from our fans, but when we do and it's a fun message like this, we can't help but share it. This group of wine lovers come from St. John's, Newfoundland. There are 6 of them who have been getting together since 1978 to blind taste wines, out of pure fun, and appreciation. They all have different professions in the fields of: Legal, Medical, Real Estate, general business and Farming, all with one thing in common. A love and appreciation of wine. They sent us an email sharing some love and what they discovered, please enjoy.
"When Jancis Robinson gave your 2011 La Stella Maestoso "Solo" Merlot 17.5/ 20 marks, my interest was peaked. So you were kind enough to send 6 bottles to us (as we had ordered). Last night, I put your wine through its paces. I presented your wine blindly to 5 experienced wine tasters, although they knew your wine was among 6 wines presented to them. I did not know myself which position was your wine. Did your wine immediately stand out as different? No, in fact no one identified your wine as Canadian. Tasters called it Chateau Pavie Premier Grand Cru St.Emilion, a high level Vieux Chateau Certan Pomerol and a high end California Merlot . Wow, what an accomplishment you have done. It was dark in color with lots of black and blue fruit with a long and elegant finish.
Congratulations. I have been following Canadian wine making for 40 years and this is the best Merlot, yet.
Thank you wine lovers of St.John's – keep up those tastings, you have much to teach us about passion, wines of the world and most importantly, friendship. Cheers!
PreviousMusic + Food + Merlot Wine Pairing NextMusic + Food + our Maestoso Merlot!


Dr Lara Goscè is a mathematical modeller specialising in the study of infectious diseases. Her main interest is the analysis of spreading and contagion mechanisms and population dynamics. After completing a PhD in the microscopic study of epidemic spreading in crowded and confined environments with particular focus to the London Underground network, she has then joined the Institute of Global Health and is now working on several projects involving the analysis of key aspects of the tuberculosis epidemic such as adherence to treatment, latency periods and drug resistance strains. Apart from being able to refine models that can more accurately forecast the spread of diseases, she is also interested in the scientific communication and dialog in order to allow for more informative decisions that can be made to develop efficient strategies and policies for suitable interventions.
OPTIMA TB: Assesssing the Efficiency of TB Prevention and Care in Belarus, South Africa and Peru.


text:
Psych warfare out West
At the sprints on Burnaby Lake, coxswains for Cal and Washington needled their opposing crews until matter and mind finally won over mind
Dan Levin
It is a sport of exquisite symmetry—crew racing—and of paradox, decorum and tiny men whose job it is to yap in the faces of huge men. Sometimes, not too often, the little fellows turn on each other. That is what happened in the Western Sprints last week at Vancouver, British Columbia in the finals of the eight-man varsity shells on Burnaby Lake. The two powerhouses, California and Washington, had drawn adjoining lanes and the Huskies started badly. Marco (Meatball) Meniketti, Cal's coxswain, crowed, "That's it, we're gonna break 'em!" His men got the message, but he also meant Washington to hear. Earlier Meniketti had said, "If a race is close, I'll do anything to encourage my crew and discourage the other one."
Halfway through the race, at 1,000 meters, Cal led by two seats, and Meniketti aimed his megaphone to starboard and yelled, "We're two seats up!" and then, "We're three seats up!" At that point the Washington cox found his voice. "They're one seat up," Ted Van Bronkhorst told his men.
Honesty is no virtue halfway through a crew race, and as Washington pulled bow to bow Meniketti saw fit to lie to his troops, "They're not gaining!" As Washington moved steadily ahead, Van Bronkhorst yelled sideward, "We're moving away!" Meniketti reasured his men, "They're not moving away!"
"We're up three seats!" called Van Bronkhorst.
"They're up one seat!" replied Meniketti.
"We're up four seats!" the cry came back, and finally,' 'We're moving away!" And Washington really was. Cal finished third, behind California at Irvine.
Later Ted Van Bronkhorst said, "It's very demoralizing to hear the other guy shout 'We're moving away!'—especially if it's true!"
Cal Coach Steve Gladstone had seen it coming. His crew had won its first heat the day before, but had labored very hard for its 6:27.18 time. Washington had taken a second longer to win its heat, but hadn't worked nearly as hard. "One slight disruption of rhythm against Washington and that'll be it," Gladstone said before the race. But there were no disruptions. Cal's time was a fast 6:06.64, but Washington, five seconds faster, was a bigger crew, and on this day a better one.
Gladstone was glum, but dry. Ted Van Bronkhorst was happy, but he was also climbing out of Burnaby Lake, where, according to tradition, his teammates had flung him, and as he talked psychological warfare he was still dripping. "When you see that other crew looking over, you know they're in trouble."
"Was Cal doing that?" he was asked, and Van Bronkhorst just smiled.
A senior, Van Bronkhorst is a psychology major, which appears to be an appropriate course of study for him, and coxing has turned out to be not a bad choice for an intercollegiate sport. But even at 112 pounds and 5'4" he is not a small coxswain. Meniketti, his debating partner from Cal, is two inches shorter. And Bob Porter, the cox for Irvine, is 4'10" and weighs 84 pounds. That trio was the smallest of the best at the sprints. At the other end of the scale were Van Bronkhorst's teammates—six of the Huskie heavyweight varsity were 6'5" or over, and that did not just happen. As Van Bronkhorst puts it, "A lot of incoming freshmen get letters from our crew department—all the small guys and all the tall guys."
Washington is a very large school, so that is quite a mailing list. At Vancouver, Washington entered crews in 10 events, and took seven firsts and three seconds, a fairly typical performance for a school that has dominated Western crew for most of the past 50 years.
No U.S. university has a stronger crew program than Washington, or a more competitive one. But aside from Cal and UCLA it is the only Western school whose crew program is amply budgeted, with two full-time coaches and full travel and equipment budgets. In the East, though, there are many such crew schools, and have been for decades: Harvard, Yale, Princeton and Syracuse, to name a few. And while there is little high school rowing in the West, the East has always had many prep and high schools with active programs. But the style of rowing now used by almost every major crew in the country originated in the West and came East to displace the older, more classical way of pulling an oar through the water.
In 1907 a Washington football trainer named Hiram Conibear turned to crew and taught his oarsmen to row shorter, quicker strokes. No one had ever rowed this way, and some of his disciples went East to coach—notably Tom Bolles of Harvard. The Washington style spread. About the same time George Pocock began building racing shells in Seattle. Boats built by Pocock and his brother Dick dominated racing until European-built shells (and lately domestic fiberglass-hulled boats) began to make inroads. At 83 Pocock is still active in the business, and was guest of honor at the Vancouver regatta.
For Washington's varsity eight, the victory over Cal was especially sweet. Just three weeks earlier, on the Oakland Estuary, Washington had lost to Cal for the first time in nine years. But the Huskies were rowing a borrowed boat, and there were complaints about it. At Vancouver they brought their own, and there were no complaints from anyone.
The water on Burnaby Lake was calm and free from current and there was hardly any wind. The course, only four miles from downtown, was almost too perfect to be believed. Washington Coach Dick Erickson called it "The finest racing course in the Western hemisphere." He said that it was equaled only by Munich's Olympic course and the one at Lucerne in Switzerland.
Burnaby Lake has come a long way. Crews raced on it in the '30s but a falling water level eventually choked it with water lilies and for most of the past 40 years Burnaby was more field than lake. Then in the fall of 1972 it was finally cleared, and served as the crew course for the Canada Summer Games. And this year, with the Western Sprints due to be held in the Northwest, the committee chose Burnaby, the first time the event has been held outside of the U.S.
Lily pads still fringe Burnaby's edges, and the lake resembles nothing more than a dark-water bass pond, a very small one. At its deepest it is only 14 feet; it is not even two miles long, and the open water portion cannot be more than 500 yards wide. But all these are good things. Burnaby is so narrow that last weekend when gusts of wind hit the trees on one side they blew to the other before hitting the water, and the pads smothered any chop that threatened to form. At each end of the 2,000-meter course six sets of pilings had been driven 90 feet into the muddy bottom, with cables running the length of the course connecting them underwater. All the buoys marking the lanes are on vertical lines attached to the cables. In this setup there are no horizontal lines at the surface for oars or boats to tangle with.
On the starting line at Burnaby Lake six aluminum structures rise three feet above the water, each supporting what looks like a diving board. A small boy lies on each board and holds onto the stern of the shell. Above him in an official's tower someone asks through loudspeakers, "Êtes vous prêt? Partez!" in the international racing language.
The boys' hands loosen, the starter's flag comes down and the shells are away. They move westward, toward the mountains of the Coastal Range, ten thousand feet high, snow-capped even in May. The mountains are 30 miles distant, but they all but hover over the lake's far shore.
It is an incongruous juxtaposition, the shells against the mountains. Ivy-covered bricks would seem more fitting. At the lake's far end, waiting, 1,500 people are on their feet in a grandstand built just for spectators at crew races. They stare down the lake at the boats, which at that angle seem hardly to be moving. The oars lift ever so slowly. The shells look like great torpid water bugs now. But as they move up the lake, they seem to pick up speed. Clack clack, go the coxswains' blocks against the gunwales. And the crowd begins to cheer.
Ted Van Bronkhorst is yelling, "We're starting to move! We're starting to move!" But Marco Meniketti is yelling, too, "They're not moving, they're not moving." Only one of them can be telling the truth. And last week it was Washington.
WASHINGTON'S STROKE, SEVEN AND SIX OARS MAKE UP WATER AGAINST CALIFORNIA


The Northern Ontario School of Medicine (NOSM) is pleased to announce the appointment of Dr. Paul Miron as Program Director of the School's Family Medicine Residency Program, effective June 30, 2018.
The Summer 2018 is available now. Special focus on educationing tomorrow's health-care professionals.


text:
(function () {
/**
 * @author  Dmytro Karpovych
 */
var formus = angular.module('formus', []);

formus.provider('FormusConfig', function($logProvider) {
    var getDefault = function() {
        return {
            showErrors: true
        };
    };
    var configs = {
        form: function() {
            return {
                title: '',
                name: '',
                fieldset: {
                    fields: []
                },
                data: {},
                config: {
                    showErrors: true,
                    readonly: false,
                    buttons: [],
                    class: 'padding-top-10',
                    submit: {
                        class: 'btn btn-default',
                        title: 'Save',
                        handler: function() {}
                    }
                }
            };
        },
        fieldset: function() {
            return {
                showErrors: false
            };
        },
        checkbox: function() {
            return {
                showLabel: false,
                trueValue: true,
                falseValue: false,
                default: false
            }
        },
        checklist: function() {
            return {
                trueValue: true,
                falseValue: false,
                items: []
            }
        },
        radio: function() {
            return {
                inline: true
            }
        },
        radio: function() {
            return {
                horizontal: false
            };
        },
        group: function() {
            return {
                'class': 'bordered'
            };
        },
        button: function() {
            return {
                class: 'btn btn-primary',
                handler: function() {}
            };
        },
        file: function() {
            return {
                showLink: true
            };
        },
        message: function () {
            return {
                type: 'info'
            }
        }
    };
    var set = function(name, config) {
        if (typeof(config) !== 'function') {
            $logProvider.warn('Config must be callback');
        }
        configs[name] = config;
    };
    var getProvider = function($log) {
        var get = function(name) {
            if (configs[name]) {
                return configs[name]();
            }
            // $log.info('Don\'t find config for input "' + name + '"');
            return getDefault();
        };
        return {
            get: get
        };
    };

    return {
        set: set,
        $get: ['$log', getProvider]
    };
});

/**
 * Provide getter for forms configurations
 */
formus.provider('FormusContainer', function() {
    var log,
        helper,
        defaultConfig,
        container = {};
    this.setContainer = function(data) {
        container = data;
    };

    var get = function(name) {
        var form = {};
        if (angular.isUndefined(name)) {
            log.error('Don\'t set form configuration name ');
        } else {
            if (container[name]) {
                form = container[name];
                if (!form.name) {
                    form.name = name;
                }
                if (angular.isDefined(form.parent)){
                   form = helper.extendDeep(get(form.parent), angular.copy(form));
                }
            } else {
                log.error('Form configuration with name "' + name + '" don\'t found in configuration container');
            }
        }
        return helper.extendDeep(angular.copy(defaultConfig), angular.copy(form));
    };

    var set = this.set = function(name, value) {
        container[name] = value;
    };
    this.$get = ['$log', 'FormusConfig', 'FormusHelper',
        function($log, FormusConfig, FormusHelper) {
            defaultConfig = FormusConfig.get('form');
            log = $log;
            helper = FormusHelper;
            return {
                get: get,
                set: set
            };
        }
    ];
});

formus.directive('formusField', function($injector, $http, $compile, $log, $templateCache, FormusLinker, FormusValidator, FormusHelper) {
    return {
        transclude: true,
        restrict: 'E',
        scope: {
            'config': '='
        },
        link: function($scope, $element, $attr) {
            $scope.isValid = true;
            $scope.dirty = false;
            $scope.validation = function(value) {
                if (angular.isObject($scope.config.validators)) {
                    $scope.errors = [];
                    angular.forEach($scope.config.validators, function(args, name) {
                        var error = FormusValidator.validate(name, value, $scope.config, args);
                        if ((error !== null) && (_.isString(error))) {
                            $scope.errors.push(error);
                        }
                    });
                }
            };

            $scope.$on('Formus.validate', function(e) {
                if (!$scope.config.hide) {
                    $scope.validation($scope.model);
                } else {
                    $scope.errors = [];
                    $scope.isValid = true;
                }
                $scope.$emit('Formus.validated', $scope.isValid);
            });

            var init = function() {
                $scope.parentCtrl = $element.parent().controller('formus-field');
                if (angular.isUndefined($scope.parentCtrl)) {
                    $scope.parentCtrl = $element.parent().controller('formus-form');
                }
                $scope.parentScope = $scope.parentCtrl.getScope();

                $scope.parentScope.$watch('model', function(newValue) {
                    $scope.model = FormusHelper.getNested(newValue, $scope.config.name);
                }, true);

                $scope.$watch('model', function(newValue, oldValue) {
                    if (newValue !== oldValue) {
                        FormusHelper.setNested($scope.parentScope.model, $scope.config.name, newValue);
                        $scope.dirty = true;
                        $scope.validation(newValue);
                    }
                });

                $scope.parentScope.$watch('errors', function(newValue) {
                    $scope.errors = FormusHelper.getNested(newValue, $scope.config.name);
                }, true);

                $scope.$watch('errors', function(newValue, oldValue) {
                    if (newValue !== oldValue) {
                        $scope.isValid = !((Array.isArray(newValue)) && (newValue.length > 0));
                        $scope.parentScope.errors = FormusHelper.setNested($scope.parentScope.errors, $scope.config.name, newValue);
                    }
                });

                $scope.isParent = (!angular.isUndefined($scope.config.fields));
                /** Set field type 'fieldset' when it has child fields and don't set other type */
                if ($scope.isParent && (_.isUndefined($scope.config.input))) {
                    $scope.config.input = 'fieldset';
                }

                FormusLinker.call($scope.config.input, {
                    $scope: $scope,
                    $element: $element,
                    $attr: $attr
                });
                if (angular.isFunction($scope.config.linker)) {
                    $injector.invoke($scope.config.linker, this, {
                        $scope: $scope,
                        $element: $element,
                        $attr: $attr
                    });
                }
            };

            /** Wait when config will be defined */
            var listener = $scope.$watch('config', function() {
                if (angular.isDefined($scope.config)) {
                    init();
                    listener();
                }
            }, true);
        },
        controller: function($scope, $element) {
            this.getScope = function() {
                return $scope;
            };
        }
    };
});

formus.directive('formusForm', function($q, FormusLinker, FormusTemplates, FormusHelper) {
    return {
        transclude: true,
        replace: true,
        restrict: 'E',
        scope: {
            'name': '@',
            'fieldset': '=',
            'errors': '=?',
            'model': '=',
            'config': '='
        },
        templateUrl: FormusTemplates.getUrl('form'),
        link: function($scope, $element, $attr) {
            $scope.isValid = true;
            $scope.errorList = [];

            $scope.$watch('errors', function(newValue) {
                $scope.errorList = FormusHelper.getErrorsList(newValue);
                $scope.isValid = $scope.errorList.length === 0;
            }, true);
            FormusLinker.formLinker({
                $scope: $scope,
                $element: $element,
                $attr: $attr
            });
        },
        controller: function($scope, $element, $rootScope) {

            $scope.callHandler = function(item) {
                if (item.validate) {
                    $scope.validate().then(function() {
                        if (angular.isFunction(item.handler())) {
                            item.handler();
                        }
                    }, angular.noop);
                } else {
                    if (angular.isFunction(item.handler())) {
                        item.handler();
                    }
                }
            }
            this.getScope = function() {
                return $scope;
            };

            $scope.validate = function() {
                var deferred = $q.defer(),
                    fieldsAmount = $element.find('formus-field').length,
                    validated = 0,
                    hasInvalid = false;
                var handler = function(event, isValid) {
                    validated++;
                    hasInvalid = !isValid ? true : hasInvalid;
                    if (validated === fieldsAmount) {
                        if (hasInvalid) {
                            deferred.reject();
                        } else {
                            deferred.resolve();
                        }
                    }
                };

                $scope.$on('Formus.validated', handler);
                $scope.$broadcast('Formus.validate');
                return deferred.promise;
            };
            $scope.submit = function() {
                $scope.validate().then(function() {
                    if (angular.isFunction($scope.config.submit.handler)) {
                        $scope.config.submit.handler();
                    }
                }, angular.noop);
            };

            $rootScope.$on('Formus.validateForm', function(event, name) {
                if (name === $scope.name) {
                    $scope.validate().then(function() {
                        $rootScope.$emit('Formus.validatedForm', true);
                    }, function() {
                        $rootScope.$emit('Formus.validatedForm', false);
                    });
                }
            });
        }
    };
});

/**
 * Service with useful functions
 */
formus.provider('FormusHelper', function() {
    var setConfigByName = function setConfigByName(self, path, prop, value) {
        if (self.fieldset) {
            self = self.fieldset;
        }
        var target = self;
        if (angular.isString(path)) {
            path = path.split('.');
        }
        path = path.length ? path : false;
        if (path) {
            if (self.name === path[0]) {
                path.shift();
            }
            if (path.length === 0) {
                setConfigByName(self, false, prop, value);
            } else {
                _.each(self.fields, function(item) {
                    setConfigByName(item, path, prop, value);
                });
            }
        } else {
            target[prop] = value;
        }
    };
    /**
     * Create error array form error object
     */
    var getErrorsList = function(object) {
        var errorList = [];
        var addErrors = function(errors) {
            if (Array.isArray(errors)) {
                if (_.each(errors, function(item) {
                        errorList.push(item);
                    }));
            } else {
                _.each(errors, function(item) {
                    addErrors(item);
                });
            }
        }
        addErrors(object);
        return errorList;
    }

    /**
     * Extract error object from server response
     */
    var extractBackendErrors = function(response) {
        var errors = {};
        _.each(response.data, function(error) {
            this[error.field] = [error.message];
        }, errors);
        return errors;
    };

    /**
     * Merge objects by recursive strategy
     */
    var extendDeep = function extendDeep(dst, src) {
        return _.merge(dst, src);
    };

    /**
     * Set property value from object by nested name (with dot)
     */
    var setNested = function(model, name, value) {
        if (name) {
            if (!angular.isObject(model)) {
                model = {};
            }
            var result = model;
            var keys = name.split('.');
            var len = keys.length;
            for (var i = 0; i < len - 1; i++) {
                var key = keys[i];
                if (!model[key]) model[key] = {}
                model = model[key];
            }
            model[keys[len - 1]] = value;
            return result;
        }
        return model = value;
    };

    /**
     * Get property value from object by nested name (with dot)
     */
    var getNested = function(model, name, defaultValue) {
        defaultValue = angular.isDefined(defaultValue) ? defaultValue : undefined;
        if (angular.isDefined(model)) {
            if (name) {
                if (angular.isObject(model)) {
                    var result = model;
                    var keys = name.split('.');
                    for (i = 0; i < keys.length; i++) {
                        result = result[keys[i]];
                        if (angular.isUndefined(result)) {
                            return defaultValue;
                        }
                    }
                    return result;
                }
                return defaultValue;
            }
            return model;
        }
        return defaultValue;
    };

    /**
     * Init model object by fields configuration with setting default values
     */
    var initModel = function(model, field) {
        var name = field.name;
        if (name) {
            var currentModel = model;
            var keys = name.split('.');
            if (keys.length > 1) {
                for (var i = 0; i < keys.length - 1; i++) {
                    var key = keys[i];
                    if (angular.isUndefined(currentModel[key])) {
                        currentModel[key] = {};
                    }
                    currentModel = currentModel[key];
                }
                name = keys[keys.length - 1];
            }
            if (angular.isUndefined(currentModel[name])) {
                currentModel[name] = (field.fields) ? {} : '';
            }
            if (angular.isDefined(field.default)) {
                currentModel[name] = field.default;
            }
            if (field.fields) {
                _.each(field.fields, function(field) {
                    currentModel[name] = initModel(currentModel[name], field);
                });
            }
        } else {
            if (angular.isUndefined(model)) {
                model = (field.fields) ? {} : '';
            }
            if (angular.isDefined(field.default)) {
                model = field.default;
            }
            if (field.fields) {
                _.each(field.fields, function(field) {
                    model = initModel(model, field);
                });
            }
        }
        return model;
    };

    /**
     * Create array of objects from other object by value and title fields and property name (optionaly)
     */
    var extractItems = function(data, valueField, titleField, groupName) {
        var list = [];

        if ((arguments.length === 4) && (angular.isDefined(groupName))) {
            data = data[groupName];
        }
        _.each(data, function(item) {
            list.push({
                value: item[valueField],
                title: item[titleField]
            });
        });
        return list;
    };

    var methods = {
        setConfigByName: setConfigByName,
        getErrorsList: getErrorsList,
        setNested: setNested,
        getNested: getNested,
        initModel: initModel,
        extendDeep: extendDeep,
        extractBackendErrors: extractBackendErrors,
        extractItems: extractItems
    };
    return {
        setMethod: function(name, method) {
            methods[name] = method;
        },
        $get: function() {
            return methods;
        }
    };
});

/**
 * Provide container for directives linkers
 * This service allows to create custom link functions for different field types
 */
formus.provider('FormusLinker', function() {
    var loadTemplateLinker = function($scope, $element, $compile, FormusTemplates, $log) {
        if ($scope.config) {
            $scope.setElementTemplate = function(templateData) {
                $element.html(templateData);
                $compile($element.contents())($scope);
                if (angular.isFunction($scope.afterLoadTemplate)) {
                    $scope.afterLoadTemplate();
                }
            };
            var template = $scope.config.template;
            if (template) {
                $scope.setElementTemplate(template);
            } else {
                var templateName = $scope.config.templateName;
                if (templateName && (FormusTemplates.has(templateName))) {
                    FormusTemplates.get(templateName).then(function(template) {
                        $scope.setElementTemplate(template);
                    }, function() {
                        $log.error('Template type \'' + templateName + '\' not supported.');
                    });
                } else {
                    var templateUrl = $scope.config.templateUrl;
                    if (templateUrl) {
                        FormusTemplates.load(templateUrl).then(function(template) {
                            $scope.setElementTemplate(template);
                        }, null);
                    } else {
                        var input = $scope.config.input;
                        if (input && (FormusTemplates.has(input))) {
                            FormusTemplates.get(input).then(function(template) {
                                $scope.setElementTemplate(template);
                            }, function() {
                                $log.error('Template type \'' + input + '\' not supported.');
                            });
                        }
                    }
                }
            }
        }
    };

    var defaultLinker = function($scope, FormusConfig) {
        var defaultConfig = FormusConfig.get($scope.config.input);
        _.each(defaultConfig, function(value, name) {
            if (angular.isUndefined($scope.config[name])) {
                $scope.config[name] = value;
            }
        });
        if (($scope.config.label) && angular.isUndefined($scope.config.showLabel)) {
            $scope.config.showLabel = true;
        }
    };

    var formLinker = function($scope, FormusHelper) {
        var listener = $scope.$watch('fieldset', function() {
            if (!_.isUndefined($scope.fieldset)) {
                $scope.model = FormusHelper.initModel($scope.model, $scope.fieldset);
                $scope.errors = $scope.errors || {};
                listener();
            }
        });
    };

    var linkers = {
        loadTemplate: loadTemplateLinker,
        default: defaultLinker,
        form: formLinker,
        wrapperLinker: loadTemplateLinker
    };

    function getLinker(injector, log) {
        return {
            call: function(type, args) {
                injector.invoke(linkers.default, null, args);
                if (linkers.hasOwnProperty(type)) {
                    injector.invoke(linkers[type], null, args);
                } else {
                  // log.info('Don\'t find linker for input "' + type + '"');
                }
                injector.invoke(linkers.loadTemplate, null, args);
            },
            formLinker: function(args) {
                injector.invoke(linkers.form, null, args);
            }
        };
    }

    return {
        setLinker: function(type, linker) {
            linkers[type] = linker;
        },
        $get: ["$injector", "$log",
            function($injector, $log) {
                return getLinker($injector, $log);
            }
        ]
    };
});

/**
 * Provide container for templates by input types
 */
formus.provider('FormusTemplates', function() {
    var q, cache, http, log;
    var templateMap = {
        form: 'formus/form.html',
        wrapper: 'formus/inputs/wrapper.html',
        radio: 'formus/inputs/radio.html',
        checkbox: 'formus/inputs/checkbox.html',
        checklist: 'formus/inputs/checklist.html',
        hidden: 'formus/inputs/hidden.html',
        select: 'formus/inputs/select.html',
        textarea: 'formus/inputs/textarea.html',
        textbox: 'formus/inputs/textbox.html',
        fieldset: 'formus/inputs/fieldset.html',
        button: 'formus/inputs/button.html',
        label: 'formus/inputs/label.html',
        message: 'formus/inputs/message.html',
    };

    /**
     * @param name string | object (name: Url)
     * @param templateUrl
     */
    var setTemplateUrl = function(name, templateUrl) {
        if (angular.isString(name)) {
            templateMap[name] = templateUrl;
        } else {
            angular.forEach(name, function(templateUrl, name) {
                setTemplateUrl(name, templateUrl);
            });
        }
    };

    /**
     * Check if exist template with name
     * @param name
     */
    var has = function(name) {
        return typeof(templateMap[name]) !== 'undefined';
    };

    /**
     * @param name
     * @returns string
     */
    var getTemplateUrl = function(name) {
        return templateMap[name];
    };

    /**
     * Load template by url
     * @param templateUrl
     */
    var load = function(templateUrl) {
        var deferred = q.defer();
        http.get(templateUrl, {
            cache: cache
        }).then(function(response) {
            deferred.resolve(response.data);
        }, function() {
            log.error('Problem with loading template for ' + templateUrl);
            deferred.reject();
        });
        return deferred.promise;
    };

    /**
     * Get template by name
     * @param name
     */
    var get = function(name) {
        return load(getTemplateUrl(name));
    };

    return {
        setTemplateUrl: setTemplateUrl,
        $get: ['$q', '$http', '$templateCache', '$log',
            function($q, $http, $templateCache, $log) {
                q = $q;
                http = $http;
                cache = $templateCache;
                log = $log;
                return {
                    has: has,
                    get: get,
                    load: load,
                    getUrl: getTemplateUrl
                };
            }
        ]
    };
});

/**
 * Service for validation
 *
 * This service allows to contain validator functions and perform validation of field values
 */
formus.provider('FormusValidator', function($logProvider) {
    var validators = {
        required: function(value, config, args) {
            if (!value) {
                return ((args) && (args.msg)) ? args.msg : (config.label + ' cannot be blank');
            }
            return null;
        },
        email: function(value, config) {
            var validateEmail = function(value) {
                if (value) {
                    var pattern = /^(([^<>()[\]\\.,;:\s@\']+(\.[^<>()[\]\\.,;:\s@\']+)*)|(\'.+\'))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
                    return pattern.test(value);
                } else {
                    return true;
                }
            }

            if (!validateEmail(value)) {
                return config.label + ' must be a valid e-mail';
            }
            return null;
        },
        url: function(value, config) {
            var validateLink = function(url) {
                if (value) {
                    var pattern = new RegExp('^(https?:\\/\\/)?' + // protocol
                        '((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|' + // domain name
                        '((\\d{1,3}\\.){3}\\d{1,3}))' + // OR ip (v4) address
                        '(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*' + // port and path
                        '(\\?[;&a-z\\d%_.~+=-]*)?' + // query string
                        '(\\#[-a-z\\d_]*)?$', 'i'); // fragment locator
                    return pattern.test(url);
                } else {
                    return true;
                }
            }
            if (!validateLink(value)) {
                return config.label + ' must be a valid url';
            }
            return null;
        }
    };
    var getProvider = function($log, $injector) {
        function get(name) {
            if (validators[name]) {
                return validators[name];
            }
        }

        function validate(validatorName, value, config, args) {
            if (validators[validatorName]) {
                return $injector.invoke(validators[validatorName], null, {
                    value: value,
                    config: config,
                    args: args
                });
            }
            $log.warn('Don\'t find validator with name "' + validatorName + '"');
            return null;
        }
        return {
            get: get,
            validate: validate
        };
    };
    var set = function(name, callback) {
        if (angular.isFunction(callback)) {
            validators[name] = callback;
        } else {
            $logProvider.warn('Validator must be function. Can\'t set validator with name "' + name + '"');
        }
    };
    return {
        set: set,
        $get: getProvider
    };
});

formus.directive('formusWrapper', function(FormusTemplates, FormusLinker, $timeout) {
    return {
        restrict: 'AE',
        transclude: true,
        templateUrl: FormusTemplates.getUrl('wrapper'),
        link: {
            post: function($scope, $element, $attr) {
                $scope.input = $scope.$$childHead.$$childHead;
            }
        }
    };
});
})();


While browsing for recipes online, I found this: "Give your Friday night fish and chips an Asian twist with tempura-battered cod and a spicy wasabi tartare sauce." Sounds delicious? Perhaps – but more exciting to me is the use of the second person possessive. "You" and "your" in the typical recipe are markers of inclusivity and universality – they include us all. The expectation is that everyone eats fish and chips on a Friday so everyone will be enticed by this fusion-tinged variation.
When we consider a common location for the second person voice – the self-help text – matters become complicated. Jordan B Peterson's 12 Rules for Life: An Antidote to Chaos (2018), to take a recent controversial example, appears to behave like the recipe. In the declared pursuit of "a shared cultural system" in which people "act in keeping with each other's expectations and desires", Peterson uses the second person in a universalising way.
If everyone follows his imperatives – a typical example being: "Compare yourself to who you were yesterday, not to who someone else is today" – the implication is that the result will be order, harmony, contentment. The illusion of inclusion (for it is only an illusion) is bolstered by the liberal use of the first person plural: "we". In my opinion, Peterson isn't really giving advice – he is luring the reader into complicity with his neoliberal, individualist, masculinist world view. Observations such as "you must be prepared to do anything and everything, in case it becomes necessary" merely reassert Peterson's male authority. Any supposedly shared beliefs are those of the marketplace.
Iain Banks 1993 novel, Complicity, makes extensive use of second person narrative.
This demands that the reader reflects on the ethics of sympathy and complicity and questions the values being espoused. Complicity is a well-known novel – but the second person in literature is rare enough to be a curiosity.
One of the reasons for this might be that, if used very extensively – as in Paul Auster's memoirs Winter Journal (2012) and Report from the Interior (2013) – it can feel forced, awkward and, frankly, irritating: "Until that morning, you just were. Now you knew that you were." Whether or not – as critics such as Irene Kacandes have argued – the second person enhances reader involvement, overuse can feel like a form of harassment from someone trying too hard to get into your head.
Auster gestures toward universality, claiming in Report from the Interior that he writes not because "you find yourself a rare or exceptional object of study, but precisely because you don't, because you think of yourself as anyone, as everyone". This is disingenuous: the experiences he describes are too personal and specific to be universal – and to assume they are is presumptuous. Even if he is trying to gain distance from himself by using the second person, Auster is still talking only to another version of himself. After all, "you are still who you were, even if you are no longer the same person".
Karl Geary's 2017 coming-of-age story, Montpelier Parade, works in a similar way to Auster's memoirs – the adult writer addresses a youthful self, adding sage, gently ironic reflections with hindsight: "You were the hero in your dream of saving her." The irony derives from differing levels of experience and knowledge, but again the reader watches from a distance as the narrator talks to himself.
Montpelier Parade: second person as confession.
In both Auster's and Geary's texts, narrators compare themselves to who they were yesterday, as Peterson recommends. What is revealed is an idea of literary selfhood closer to the strong, adaptable second person of the self-help book than we might expect.
Likewise, Mohsin Hamid's How to Get Filthy Rich in Rising Asia (2013) begins by acknowledging the paradox of self-help books. "You read a self-help book so someone who isn't yourself can help you, that someone being the author" – and then goes on to admit that "the idea of self in the land of self-help is a slippery one. And slippery can be good".
Slippery can indeed be good. In fact, the power of Moore's and Hamid's stories is their paradoxical nature. They show that individual experience is messy and that it is not amenable to generic recipes for success, and they are more inclusive and universal for doing so. It is easier to relate to a narrator who turns out not to have all the answers – one who, like Hamid, realises that every "you" is different.
Used in such ironic, ambiguous ways, the second person becomes a powerful tool because it reminds us that, as Canadian philosopher Lorraine Code argues, "persons essentially are second persons". No matter how clear my sense of self, I am always somebody's other. You may well have found that yourself.
This entry was posted in Article, Writing and tagged article, narrative, second-person, writing. Bookmark the permalink.


IT Dojo: Control users' temporary Internet files and browser history In this IT Dojo video, Bill Detwiler shows you a simple monitoring solution that uses Windows Server 2003 Group Policy.Before watching the video, you should realize this tip isn't right for every situation. This method uses Windows XP and Internet Explorer's local browsing history. To view the history files, you must physically visit each machine, remotely access the machine, or copy the files to a network location with a script. Furthermore, a sophisticated end-user could easily navigate to and delete the browser history. This monitoring technique is best suited when monitoring a small number of users, or better yet, a single, problem user.
In this IT Dojo video, Bill Detwiler shows you a simple monitoring solution that uses Windows Server 2003 Group Policy.Before watching the video, you should realize this tip isn't right for every situation. This method uses Windows XP and Internet Explorer's local browsing history. To view the history files, you must physically visit each machine, remotely access the machine, or copy the files to a network location with a script. Furthermore, a sophisticated end-user could easily navigate to and delete the browser history. This monitoring technique is best suited when monitoring a small number of users, or better yet, a single, problem user.


TPN FoodPak is a leader in flexible packaging for food and consumer products.
TPN FoodPak's vision is centered on producing packaging products using state-of-the-art machinery combined with continuous process improvements by experienced people and outstanding customer service. Our shared business focus with the rest of the THSP group ensures that TPN FoodPak will continue to implement the latest technologies to provide you with the best products.
TPN FoodPak is ready and committed to being recognized as the leading flexible packaging company in Asia.
This site copyright © 2004-2019 TPN FoodPak Co., Ltd. All Rights Reserved.


Established with a view to providing expertise in undertaking field extension projects from time to time in the adjoining rural communities of the University and beyond in order to develop linkages between farmers and the department, the department has constantly delegated her students to the villages for practical application of the principles and techniques learnt in the classroom on farmers' fields.
The faculty members undertake research on various aspects of agricultural extension like needs assessment of extension clientele, assessment of competencies of extension field staff, identification of problems in extension administration, adoption of agricultural innovations, and evaluation of various extension projects.
We impact skills needed in research methodology to diagnose and approach agricultural development problems with confidence and effectiveness and help students' understand basic principles in agricultural economics and farm management. The teaching staff of the department also provides consultancy services to various organizations involved in the venture of rural development.


text:
Markus V. Höhne
Publikationen von Zerrin Özlem Biner
Heft (1)
Biner, Zerrin Özlem. 2011. Multiple imaginations of the state: understanding a mobile conflict about justice and accountability from the perspective of Assyrian-Syriac communities. Citizenship Studies 15(3/4): 367–379.
Biner, Zerrin Özlem. 2010. Acts of defacement, memory of loss: ghostly effects of the "Armenian crisis" in Mardin, Southeastern Turkey. History and Memory 22(2): 68–94.
Biner, Zerrin Özlem. 2007. From terrorist to repentant: who is the victim? History and Anthropology 17(4): 339–353.
Biner, Zerrin Özlem. 2007. Retrieving the dignity of a cosmopolitan city: contested perspectives on culture, rights and ethnicity in Mardin. New Perspectives on Turkey 37: 31–59.
Eckert, Julia, Zerrin Özlem Biner, Brian Donahoe, and Christian Strümpell. 2012. Introduction: law's travels and transformations. In: Julia Eckert, Brian Donahoe, Zerrin Özlem Biner, and Christian Strümpell (eds.). Law against the state: ethnographic forays into law's transformations. Cambridge Studies in Law and Society. Cambridge: Cambridge University Press, pp. 1–22.
Biner, Zerrin Özlem, Laura Jeffrey, Matei Candea, and Marta Sofia de Magalhaes. 2006. The politics of victimhood. History and Anthropology 17(4). Oxfordshire: Taylor & Francis.
Eckert, Julia, Brian Donahoe, Christian Strümpell, and Zerrin Özlem Biner (eds.). 2012. Law against the state: ethnographic forays into law's transformations. Cambridge Studies in Law and Society. Cambridge: Cambridge University Press.
Assoziierter mhoehne@...