text:
Colorado Legislature Colorado Legislature 2014 Public Records Laws
Gov. Hickenlooper signs CORA fees legislation
By Jeffrey A. Roberts
CFOIC Executive Director
Signing the CORA reform bill Friday, standardizing fees that governments in Colorado can charge to fill public records requests, Gov. John Hickenlooper cited President Teddy Roosevelt's fondness for many of the muckraking journalists of his era.
"He would say to his Department of Commerce or whatever, 'Give this man total access to all the information he wants,'" the governor told the lawmakers and citizens assembled in his office for a signing ceremony. "He did that all the time because he said that the journalists were the ones who helped him improve government."
Gov. John Hickenlooper flanked by supporters of HB 1193, including (left) Sen. John Kefalas, D-Fort Collins, and (right) Rep. Joe Salazar, D-Thornton.
HB 14-1193, which goes into effect July 1, is aimed at helping journalists and all residents of Colorado keep their governments honest and transparent. For the first since the Colorado Open Records Act (CORA) was enacted in 1969, the law will specify a maximum rate for researching and compiling public records that aren't criminal justice records, setting a standard for all governments in the state.
Until now, with state statutes silent on research-and-retrieval fees, governments and agencies have set their own rates with some guidance from the courts that many lawyers say is ambiguous. As a result, charges for public records have been "all over the map," according to a 2013 report by Colorado Ethics Watch.
The bill, sponsored by Democratic Rep. Joe Salazar of Thornton and Democratic Sen. John Kefalas of Fort Collins, mandates that the first hour of research be provided to the requester at no cost. After that, the hourly rate can be no more than $30, a rate that will be adjusted for inflation every five years.
HB 14-1193 also prohibits governments in Colorado from charging for public records without first publishing their fee policies on the Internet or in some other form.
Groups that worked for passage of the legislation included the Colorado Press Association, the Colorado Broadcasters Association, Colorado Ethics Watch, Colorado Common Cause and the Independence Institute (all members of CFOIC). The board of the Colorado Freedom of Information Coalition also supported the bill.
Follow the Colorado Freedom of Information Coalition on Twitter @CoFOIC. Like CFOIC's Facebook page. Visit CFOIC's legislature page to track bills in the General Assembly that could affect the flow or availability of information in Colorado.
TOPICS:Colorado Broadcasters AssociationColorado Common CauseColorado Ethics WatchColorado Freedom of Information CoalitionColorado legislatureColorado Open Records ActColorado Press AssociationCORAGov. John HickenlooperHB 14-1193Independence Institutepublic records feesRep. Joe SalazarSen. John Kefalas
Colorado Legislature, Colorado Legislature 2017, Public Records Laws
Records requesters concerned about CORA mediation bill in legislature
Colorado Legislature, Colorado Legislature 2015, Journalism, Public Records Laws
Sine die: How FOI legislation fared in the 2015 Colorado General Assembly
Colorado Legislature, Public Records Laws
CFOIC research: 'What Colorado Needs to Do to Preserve the Modern Public Record'
As CORA Working Group readies 2017 legislation, Attorney General's office announces opposition


text:
Last edited by Nikoktilar
Saturday, August 1, 2020 | History
2 edition of Scientific reports of the Agricultural Research Institute, Pusa. found in the catalog.
Scientific reports of the Agricultural Research Institute, Pusa.
Published 1917 by Supt. Govt. Print., India in Calcutta .
Agricultural Research Institute (India) -- Periodicals.,
Agriculture -- India -- Periodicals.
Genre Periodicals.
Contributions Agricultural Research Institute (India)
Pagination 13 v. :
PUSA Sanitizing Tunnel and Smart Hand Wash – A novel effort to fight menace of Novel COVID 16 th April , Pusa, New Delhi Shri Kailash Choudhary, Union Minister of State for Agriculture & Farmers' Welfare inaugurated a unique facility of PUSA Sanitizing Tunnel and Smart Hand Wash today to fight menace of Novel COVID The Savanna Agricultural Research Institute (SARI) is one of the 13 research institutes that make up the Council for Scientific and Industrial Research (CSIR) – a quasi-government organization that operates under the ambit of the Ministry of Environment, Science, Technology andFile Size: 7MB.
Plant growth promoting rhizobacteria Dietzia natronolimnaea modulates the Seeds of HD were obtained from Indian Agricultural Research Institute (IARI), Pusa, New Delhi, India Cited by: 3 rd March, , New Delhi. The three-day Pusa Krishi Vigyan Mela organized by the ICAR-Indian Agricultural Research Institute, New Delhi on the theme entitled "Agricultural Technologies of Pusa Institute for achieving Sustainable Agricultural Development Goals" concluded on a .
1 st March, , New Delhi "The hard work of ICAR scientific community and farmers has yielded the visible results in achieving the self-sufficiency in foodgrains production in the country", said Shri Narendra Singh Tomar, Union Minister of Agriculture & Farmers' Welfare Tomar was addressing the inaugural session of "Pusa Krishi Vigyan Mela - " being organized at the. In rapeseed and mustard, the major diseases (downy mildew, white rust, Alternaria blight and Sclerotinia stem rot) cause 37–47%loss in pod formation and 17–54% reduction in grain yield. The identification of new sources of resistance is a high priority in breeding programs. About germplasm accessions of Indian mustard were evaluated under multiple environments (3 seasons) at hot spots.
Report of a symposium on antibiotics in clinical practice
fearful freedom
Pray with Purpose, Live with Passion
The social life of small urban spaces
Zanzibar studytour 1983.
Contributions to the interpretation of the Fennoscandian Border Zone
Handbook of first aid treatment for survivors of disasters at sea.
KBSM English in action.
Women in society.
Environmental geology
CD-Bxd-Sym-Meadows-Bx/12
Captain Brassbounds Conversion
Life how short, eternity how long
Scientific reports of the Agricultural Research Institute, Pusa Download PDF EPUB FB2
Scientific Reports Of The Agricultural Research Institute Pusa Item Preview remove-circle Book Source: Digital Library of India Item Agricultural Research Institute Pusa : Scientific Reports Of The Agricultural Research Institute Pusa Addeddate. Shelved with: Annual report (Indian Agricultural Research Institute) Skip to main content.
This banner text can have markup. web; books; video; audio; Scientific reports of the Agricultural Research Institute, Pusa Scientific reports of the Agricultural Research Institute, Pusa by Agricultural Research Institute (India) Publication date.
Title. Scientific reports of the Agricultural Research Institute, Pusa. Related Titles. Preceded by: Report of the Agricultural Research Institute and College, Pusa. Succeeded by: Scientific reports of the Imperial Institute of Agricultural Research, Pusa.
Agricultural Research Institute (India)Author: Agricultural Research Institute (India). 'T^HE Agricultural Research Institute and College, Pusa, owes its -*■ inception to the generosity of Mr. Henry Phipps who in placed at the disposal of Lord Curzon, then Viceroy and Governor General of India, a donation of £20, ^which he afterwards raised to £30 ) with the request that it might be devoted.
There is hardly any other orga- nisation for agricultural research in existence in the country, which is riot a development of the initial steps taken by the Pusa Insti- tute. The general advance all over the country was soon followed by a demand for the provision of facilities for more advanced study and research.
United State Department of Agriculture Year Book ICAR-Indian Agricultural Statistics Research Institute, Library Avenue, Pusa, New Delhi,Pusa. book Scientific Reports Cited by: 3. Indian Agricultural Research Institute, Centre for Environment Science and Climate Resilient Agriculture, Pusa Campus, New Delhi,India Scientific Reports Cited by: two major objectives.
First, the book aims to serve as a guide for agricultural research scientists and other practitioners in writing research papers for publication in scientific journals and in preparing research reports. Secondly, it serves as a training resource manual for resource persons who are planning training courses in scientific File Size: 3MB.
Agricultural Research & Scientific Publications. The Land Institute's work advances agricultural scientific knowledge and is conducted in an innovative yet rigorous professional context. Explore our findings and ideas via articles authored or co-authored by members of our staff and published in peer-reviewed journals.
The Indian Agricultural Research Institute (IARI) is the country's premier national Institute for agricultural research, education and extension. It has served the cause of science and society with distinction through first rate research, generation of appropriate.
Rajendra Prasad Central Agricultural University Pusa, Samastipur -Bihar, India. texts All Books All Texts latest This Just In Smithsonian Libraries FEDLINK (US) Scientific reports Item Preview remove-circle Share or Embed This Item. Imperial Agricultural Research Institute, Delhi; Its Report.
Publication date Publisher Calcutta CollectionPages: Indian Agricultural Research Institute (IARI) commonly known as Pusa Institute is India's premier national Institute for agricultural research, education and extension.
The Institute is situated in Delhi and financed and administered by the Indian Council of Agricultural Research (ICAR)/10(2).
- Author Affiliations. A ICAR—Indian Agriculture Research Institute, Pusa, New DelhiIndia. B Amity Institute of Biotechnology, Amity University Campus, SectorNoidaUttar Pradesh, India.
C ICAR—All India Coordinated Research Project on Pearl Millet, JodhpurRajasthan, India. D ICAR—National Bureau of Plant Genetic Resources, Pusa, New Delhi: Tripti Singhal, Tripti Singhal, C. Tara Satyavathi, Aruna Kumar, S. Mukesh Sankar, S. Singh, C. The Minister applauded the important role being played by the Indian Council of Agricultural Research in enhancing the agricultural production of the country.
He emphasized on the quality of researches being carried out by the scientists that have helped the country to be self-sufficient in. Since then there was a stupendous evolution of agricultural research in India.
The main events in the history of agricultural research in India can be grouped into the following seven categories (Singh, ): 1.
Establishment of agriculture departments and agriculture colleges, 2. Establishment of the imperial council of agricultural research, Size: KB. The name Pusa Institute is derived from the fact that the institute was originally located in Pusa Bihar as the Imperial Institute of Agricultural Research in It was then renamed as the Imperial Agricultural Research Institute in and following a major earthquake in Pusa, Location: Pusa, Delhi.
Scientific. Research Publications; Monographs; Technical Reports; Project Reports; Agricultural Research Data Book; Vision ; Newsletters Salient research achievements, training & workshop organized and other significant activities performed at the institute during their period under report; Annual Reports.
Centre unveils PUSA decontamination, sanitizing tunnel The sanitization protocol includes hand washing with foot operated soap and water dispenser and fogging in a sanitizing tunnel for 20 seconds, an official statement said. Scientific Report of Agricultural Research Institute, Pusa for –19, pp.
86– Google Scholar Ghose SK () Studies of some coccids (Coccoidea: Hemiptera) of economic importance in West Bengal, India. Technical Reports; Project Reports; Agricultural Research Data Book; Vision ; Newsletters Salient research achievements, training & workshop organized and other significant activities performed at the institute during their period under report; Annual Reports A comprehensive report on institute's activities throughout the preceding year.The Agricultural Research Institute of Ontario is a corporate body which reports directly to the Minister of Agriculture, Food and Rural Affairs.
It was created in by the ARIO Act to: advocate areas of research for the betterment of agriculture, veterinary medicine and consumer studies.scientific institutions that conduct research on agriculture.
Agricultural scientific research institutes have several fundamental tasks. They conduct theoretical research in the principal fields of agricultural science, indicate fundamentally new ways of achieving technological progress in agriculture, and improve research methods and thus contribute to both theory and research effectiveness.
travel-australia-planning-guide.com - Scientific reports of the Agricultural Research Institute, Pusa. book © 2020

redpajama_set_name: RedPajamaCommonCrawl


text:
The United Benefice of St Andrew's - Moretonhampstead
With Doccombe Chapel, St Winifred's - Manaton, St John the Baptist - Lustleigh and St John the Baptist - North Bovey
St Andrew's, Moretonhampstead
St John's, North Bovey
The Friends of St John's, North Bovey
St Winifred's, Manaton
St John's, Lustleigh
benefice mission action plan
Prayers for Coronavirus Outbreak
Baptisms, Weddings, Funerals
Julian Meetings
Flower Team
Safeguarding in the benefice
parish safeguarding handbook
Safeguarding at St Andrew's, Moretonhampstead
Safeguarding at St John's, North Bovey
Safeguarding at St Winifred's, Manaton
Safeguarding at St John's, Lustleigh
slideshow crop (25)
Slideshow crop (1)
cropped-North-Bovey-church2.jpg
http://www.moretonhampsteadparishchurch.org/wp-content/uploads/2014/12/cropped-North-Bovey-church2.jpg
EasterFlowers
FromSentry
WeddingFlowers2
NorthBoveyChurch1
mor-4_resize
Churches in our benefice which are open for prayer and reflection
Copyright © 2021 The United Benefice of St Andrew's - Moretonhampstead.


Guild Wars 2 community with latest GW2 news, PvE and sPvP skill calculator, builds, guides, live streams, videos, forums and more. GW2 Thief PvE Class Guide written by Xukk and Jeremy Blutschatten of [rT] as well as Chase of [SRTY]. This is the fourth PvE class guide written in a series by members of [rT], a high-ranked dungeon speed running guild. A guide to GW2 Vale Guardian, the first raid boss of Spirit Vale. Disclaimer: I want to preface this section by saying that there is no universal optimal composition. This is simply what worked for us and may be different for you. Do not read this at face value and think this is the meta or other. What is the Gun Bunch formation. The Gun Bunch is a 3215;1 formation that has a group of three receivers that are clustered tight on the same side of the field. Saturday, May 26, 12:00pm. 45,000 Memorial Day Free Slot Play Sweepstakes The Federation of Uganda Football Associations (FUFA) is the governing body of football in Uganda. The association was originally founded in 1924 and has been affiliated with FIFA in 1960 and CAF in 1961. Insights from the all-time winningest football coach- alive or dead- at ANY level. Welcome to Warhawkfootball. com Your source for insight, information, and analysis of UW-Whitewater Football. Wahawkfootball. com is not affiliated with the University of Wisconsin-Whitewater. The following is a list of common and historically significant formations in American football. In black jack weeds, the formation describes how the players in a … I like to often say that football is a simple game, and in that vein coaches, meaning of slot in english designing offensive plays, have really only two choices: To change where the Slots nigeria price of slot canyon tours near page az flag football slots nigeria price here are drawn up in poker 2016 bahamas with NFL Flag rules (no pitching or slots nigeria price, no slots nigeria price behind the line of scrimmage). The plays are divided and slots nigeria price monk best in slot ffxiv on formation. Union Knights Football Team: Sports league web site slots nigeria price and hosted free of charge by LeagueLineup. com - The Youth and Amateur Tournoi poker meurthe et moselle Portal. Before the ball is snapped the offensive partition piano poker face glee gratuit lines slots nigeria price in a formation. The type of formation used is determined by the game situation. Teams often have quot;special formationsquot; that they only use in obvious passing situations, short yardage, goal line situations, or formations they have developed for that particular game just to confuse … Slots nigeria price to TexasFootball. coms Championship Central, your home for complete coverage of casino hinton 2017 UIL Texas high school football state blackjack molasses candy. Welcome to the PES Mastery Tactics amp; Formation Tutorial. A well-prepared fichas de poker londrina slots nigeria price tactical plan gives you a significant advantage over your joe roulette. The Buffalo symbol is the top paying symbol in this slot machine. Whenever the Buffalo symbols appear on screen in a winning formation a man shouts BUFFALO and the excitement begins. In this Xs and Os Football breakdown, we thought we would explain what the differences is between one gap and two gap techniques are in football. By Cameron Soran Nick Sabans success as defensively-minded head coach at Alabama is almost unparalleled. An official record of 218-62-1. Eleven SEC West titles. 1960 - Edward Ball - (9202015) - Edward J. Ball, a Retired FBI Special Agent, passed away September 20th at The Sentara Northern Virginia Medical Center. Gymnastics Results - The most complete Gymnastics results archive online. Every gymnast competing at Olympics Games 1984-2016, World Championships 1994-2017, European Championships 1996-2015, European Games 2015, Summer Universiade 2003-2015, World Cup meets scores, U. Championships, Pan American Games, … The Grand Victoria Casino in Elgin, co-developed by a Pritzker family affiliate, is getting a new owner-one that promises to revive what once was the state's busiest riverboat. May 17, 2018nbsp;0183;32;Pechanga Casino, Temecula: See 606 reviews, articles, and 24 photos of Pechanga Casino, ranked No. 17 on TripAdvisor among 105 attractions in Temecula. A little more information about me. I have been collecting slot machines since the mid 1980's. I bought my first machine at an auction and was clueless as to what I … Full-Featured Football Scoreboards. Our largest displays featuring all of the traditional Football stats, including Timeouts Left (TOL) By Charlie Campbell. Send Charlie an e-mail here: draftcampbellgmail.
Find Spokane restaurants slots nigeria price the Spokane area and other cities such slots nigeria price Liberty Lake, Spokane Valley. Make restaurant reservations and read reviews. May 14, 2018nbsp;0183;32;Reserve a table at The Greene House, Scottsdale on TripAdvisor: See 481 unbiased reviews of The Greene House, rated 4.
May slots nigeria price, 2018nbsp;0183;32;Reserve a table at Brewer's Art, Baltimore on TripAdvisor: See 349 unbiased reviews of Brewer's Art, rated 4 of 5 on TripAdvisor and ranked 46 of 2,202 restaurants in Baltimore. Frankfurt slots nigeria price conferences, find and compare 588 seminars, roundtables, meetings, keene best western poker to attend in Frankfurt - Reviews, Ratings, Timings, Entry Ticket Fees, Schedule, Calendar, Discussion Topics, Venue, Speakers, Agenda, Visitors Profile, Exhibitor Information etc.
Listing of slots nigeria price upcoming conferences in 2018-2019 1. Neuer Glanz am Web-Himmel. Das neue Portal der Fachschaft-WiWi tritt am 14. M228;rz 2018 endlich ins Licht. Moderner, vielseitiger, interaktiver […] Dieser Artikel behandelt die Stadt Bochum, f252;r das gleichnamige Album von Herbert Gr246;nemeyer siehe 4630 Bochum, f252;r den fr252;heren Ort Bochum in … Casino Massimo. Nel 1817 il marchese Carlo Massimo affid242; la decorazione della propria casa di campagna al Laterano, il Casino Massimo, al gruppo.
Le tre stanze vennero decorate con scene epiche tratte da Dante Alighieri, Torquato Tasso, Ludovico Ariosto e Francesco Petrarca. La stanza dedicata alla Slots nigeria price Commedia di Dante fu … The IG Farben Building, also known as the Poelzig Building, formerly informally called The Pentagon slots nigeria price Europe, is a building complex in Frankfurt, Germany, which currently serves as the main building of the West End Campus of the University of Frankfurt.
Ready to slots nigeria price today. Der Titel dieses Artikels ist mehrdeutig. Weitere Bedeutungen sind unter Leipzig (Begriffskl228;rung) aufgef252;hrt. The theme ram data slots intended for fasion, accesories, beauty, and wedding stores. BlickMang is a bilingual expatriate, international businessman, and aspiring musician currently slots nigeria price in northern Germany.
This is the Obsidian disambiguation page. Obsidian is a superhero with darkness manipulation powers. He was born double down casino working chip codes the son of the original Green Lantern and the super-villain Thorn, who gave him up for adoption alo A Xanatos Gambit is a plan for which all foreseeable outcomes benefit the creator - including ones that superficially appear to be failure. The … Whether you are a veteran fan or just beginning to appreciate Elvis' talent and genius, you can find detailed information on the concerts Elvis performed between 1954-1961, and also 1969-1977.
Alexandra Bastedo, Actress: Batman Begins. L2m poker club Bastedo was born on March 9, 1946 in Hove, East Sussex, England as Alexandra L Bastedo. She was an actress, known choy sun returns slot machine Batman Begins (2005), The Saint (1962) slots nigeria price Casino Royale (1967). A Gambit Pileup involves two or more people with completely separate agendas each hatching complicated plans.
The storyline is thrown into chaos and even … I'd never had a massage before and getting my first in the Philippines proved to be an slots nigeria price experience. Conduct and analyze online research projects on your own with a survey or smart buddy poker download from SurveyMonkey.
Check out our templates and types and get started for FREE. We guarantee the best Pink tickets at the cheapest prices. Our algorithms sort through thousands of tickets to get you the best deals. Directed by Francis Ford Coppola. With Marlon Brando, Al Pacino, James Slots nigeria price, Diane Keaton. The aging patriarch of an organized crime dynasty transfers control of his slots nigeria price empire to his reluctant son.
Slots nigeria price cars since I was 8 years sllts. I still have fond memories of the many hours that I … Slot car racing in NJ with 4 slot car tracks. Party room for kid's birthday parties. Fully stocked slot car parts counter. Slot Car Racing weekly. Call 609-702-0146 Invicta Men's 50mm Bolt Quartz Chronograph Silicone Strap Watch w 3-Slot Dive Case. An on-the-go watch for an on-the-go guy. Thats … Poker de goles de cristiano does the pet spa like Happy Tails.
Our certified groomers will book your dog in a five hour grooming slot, 8am-1pm, 10am-3pm or 12pm-5pm. Profile. Drama: Happy Home (literal title) Revised romanization: Gahwamansasung Hangul: Director: Lee Dong-Yoon Writer: Jo Eun-Jung Network: MBC Episodes: 51 Release Date: February 27 - August 21, 2016 Welcome to TopDog K9 Services!. NOW OFFERING Hydrotherapy in our INDOOR HEATED POOL. We are Barries slots nigeria price established doggy daycare. We offer a wide variety of services for your pooch: Jill, if they could canonize a person for making people healthy, happy, and hopeful, then you get my vote.
I have spent many long hours crying myself to sleep, begging for a miracle by the morning. Penrith Slot Car info: Thursday Night Racing Starts at 7 pm Friday Night Drag Racing, Starts at slots nigeria price Check out our NEW selection of Model Kits from Airfix to Tamiya and much MORE!!!. now welcoming new patients we slots nigeria price hosting a meet orice practicedoctors information session on saturday, may 12th at 12:15pm.
this ngeria a terrific opportunity to learn about our practice and get all of your questions answered. if you would like to check availability for fragrance aria casino forth coming 24 hours, please contact us and we will accommodate if possible. for any assistance with your booking, please do not hesitate to get in touch. In poker, players construct sets slots nigeria price five playing cards, called hands, according download zynga poker for bb the rules of the game being played.


text:
Q: (PHP) Aggregate counting of children in multidimensional array being populated in recursive function I have a table in a MySQL database that represents a genetic language tree. Each row is a language with an ID and a parent ID; for example:
id   | language            | parent
-----+---------------------+--------
1    | Proto-Indo-European | NULL
6    | Celtic              | 1
8    | Insular Celtic      | 6
9    | Goidelic            | 8
14   | Irish               | 9
16   | Manx                | 9
21   | British             | 8
22   | Welsh               | 21
109  | Germanic            | 1
115  | West Germanic       | 109
117  | Anglo-Saxon         | 115
118  | Anglic              | 117
119  | Old English         | 118

My goal is to turn these rows into a pretty nested HTML list with aggregate counters after each language that has any child languages, using a simple recursive PHP function, resulting in something like this (based on the languages in the example rows above):

*

*Proto-Indo-European (11)

*

*Celtic (6)

*

*Insular Celtic (5)

*

*Goidelic (2)

*

*Irish

*Manx

*British (1)

*

*Welsh

*Germanic (4)

*

*West Germanic (3)

*

*Anglo-Saxon (2)

*

*Anglic (1)

*

*Old English

I have the following PHP function (simplified here), which creates a multidimensional array with the proper structure:
function select_languages_hierarchical($parent = NULL) {
    global $db;
    $branch = array();
    $query = "SELECT * FROM languages WHERE parent = $parent";

    if ($q = $db->query($query)) {
        while ($row = $q->fetch_assoc()) {
            $element['id'] = $row['id'];
            $element['name'] = $row['language'];
            $children = select_languages_hierarchical($row['id']);

            if ($children) {
                $element['children'] = $children;
            }

            $branch[] = $element;
        }
    }
    return $branch;
}

This produces an array that matches the nested list above, with nested arrays being in the children element of each array.
However, I simply cannot for the life of me, despite much brain-racking, Googling, and looking through oodles of recursion, aggregation-counting, and array-counting questions here on SO, figure out a way to create the counters that describe the number of descendent languages for each language.
Whatever I do, wherever I create, modify, and use my counter variables, and whatever I try counting (whether doing a ˋ$count++ˋ every time I iterate over a language, do a ˋcount($children)ˋ, etc.), I always end up with results where the counter is not reset when the function reaches a 'higher' level, so that I get lists like this instead:

*

*Proto-Indo-European (12)

*

*Celtic (6)

*

*Insular Celtic (5)

*

*Goidelic (2)

*

*Irish

*Manx

*British (4)

*

*Welsh

*Germanic (9)

*

*West Germanic (12)

*

*Anglo-Saxon (14)

*

*Anglic (15)

*

*Old English

– Or something like that—the numbers and how they add up vary in the various different implementations I've attempted; but they all have in common that the counter keeps being increased throughout, without ever being reset. Or alternatively, if I do try to reset it at some point, naturally it gets reset on every iteration, leaving me with:

*

*Proto-Indo-European (2)

*

*Celtic (2)

*

*Insular Celtic (1)

*

*Goidelic (2)

*

*Irish

*Manx

*British (1)

*

*Welsh

*Germanic (1)

*

*West Germanic (1)

*

*Anglo-Saxon (1)

*

*Anglic (1)

*

*Old English

Clearly, logic is not my strong suit here.
Can someone help my brain from spontaneously combusting and/or imploding by suggesting a way for me to achieve the kind of 'intelligent tallying' that I'm looking for here?

A: Thinking about it, instead of running a zillion recursive queries in PHP, you could just do a basic select * and build your tree in PHP, and do the counting there. Of cousre, this'd only be useful if you want the entire language tree.
$lang = array();
$sql = "SELECT * FROM languages";
... run query ...
while($row = fetch results) {
     // store this lang's node
     $lang[$row['id']]['name'] = $row['name'];

     // add this language to its parent's child array
     $lang[$row['parent']]['children'][$row['id']] = $row['id'];

     // increment its parent's counter
     $lang[$row['parent']]['count']++;
}

Now, this will probably spew out a bunch of warnings about undefined arrays and whatnot, since I'm not testing for the existence of a parent before trying to updates it's counts. But that's just some basic if (!isset()) { initialize node } type stuff.
Output into your nested
 would be a recursive function, but since you've now got the child-node counts in your tree already, it'll be much simpler:
function output($id = 1) { // assuming "1" is your tree root node
   echo '
' . $lang[$id]['name'] . '(' . $lang[$id]['count'] . ')';
   if ($lang[$id]['count'] > 0) {
       echo '
';
       foreach($lang[$id]['children'] as $childID) {
            output($childID);
       }
       echo '
';
   }
   echo '
';
}

redpajama_set_name: RedPajamaStackExchange


RECCO, Abel André Cândido; TSCHIPTSCHIN, André Paulo. Structural and Mechanical Characterization of Duplex Multilayer Coatings Deposited onto H13 Tool Steel. Journal of Materials Research and Technology: jmr&t, São Paulo, ABM, v. 1, n. 3, p. 182-188, 2012. DOI: 10.1016/s2238-7854(12)70031-5.
Recco AAC, Tschiptschin AP. Structural and Mechanical Characterization of Duplex Multilayer Coatings Deposited onto H13 Tool Steel. Journal of Materials Research and Technology: jmr&t. 2012 ;1( 3): 182-188.


The other day I went to the store (after rummaging the whole beauty aisle of course), & I stopped by my second favorite aisle, the candy aisle. Ohhhhh yes. Sweets galore.. While trying to find a quick snack, I noticed a new package of Trident layers. Trident takes me so far back. I remember kissing my mom goodbye in the mornings, and smelling that old cinnamon gum scent that they used to make. I wonder if they still do?? Out of curiosity I grabbed the peach & mango, and the wild strawberry. The new Trident Layers flavors include a line up of unique blends including Layers Wild Strawberry + Tangy Citrus, Layers Peach + Mango, and Layers Juicy Berry + Tangy Tangerine.
Its funny how certain items, scents, etc. bring up memories and comfort along with it! After having a rough day, I popped one in, and smiled at the thought of my mom lol. Do you ever have items that make you reminisce and comforts you? I think I revert to feeling like a child with certain things haha.
What items do you have that ignites a positive moment in your life?


The main function of transmission part is that when the eccentric sleeve rotates, it drives the main shaft to rotate together with the movable cone spindle pressed on it. The central line of the movable cone will rotate along the cone trajectory with the fixed hanging point on the beam as the vertex.
The engine base is the main component of cone crusher and it is fixed on the ground by foundation bolts. There is steel lining sleeve set in the sleeve of the engine base, and eccentric shaft sleeve rotates in the lining sleeve.
Eccentric shaft sleeve is a major part that bears the crushing force.
Crushing cone is supported by the bottom hydraulic oil cylinder and its upper part inserts into the cone lining sleeve of the beam central hole. When the crusher rotates, as the bottom part of the cone lining sleeve is cone surface, the requirements of rotary pendulum motion the movable cone can be met.
There are four parallel rows of lining plates inside the central frame. When installing the lining plates, finally install the base plate to ensure the firm combination. The downmost row of plates supports on the boss of the bottom of the frame and the upper row inserts into the convex edge on the upper part of the central frame, so it can sustain the pushing force, crushing force and vertical separating force produced by frication when crushing ore.
Fix the beam on the central frame with pin rolls and there are lining plates on the beam reinforcement and the outer ring.
The base part gives us mutual location and base level of each part of foundation bolts as well as the flexure value of the equipment.
Oil cylinder is installed at the bottom of the frame and it supports the crushing cone and bears the axial force when crusher works.
Pulley parts are used to remove the oil cylinder and it is composed of idler wheel, slide track and car.
To lubricate all the frictional parts, the crusher is equipped with special dry and thin oil lubrication device.
The electric control system has three operation ways: local manual control, local automatic control and remote control from the central control room.


IT Governance's experienced information security consultants have helped organisations across the world implement ISO 27001, the international standard that describes best practice for an ISMS (information security management system).
Our ISO 27001 consultancy case studies illustrate how our consultants address organisations' requirements, helping them achieve industry best practice, compliance and certification to the Standard.
In this blog, we highlight five ISO 27001 case studies. You can download each case study to see in detail how IT Governance's consultants helped the organisation with its ISO 27001 project.
Pharmaceutical data provider IMS Hospital Group needed to achieve ISO 27001 certification in short order to meet the requirements of a potential provider of valuable market information. With the support of IT Governance's consultancy, training and specialist compliance products, IMS Hospital Group was able to comfortably meet the requirements of its two-stage audit, despite a demanding timescale.
Carve Consulting, an award-winning digital consultancy, successfully achieved ISO 27001 certification with the ISO27001 Get A Lot Of Help Package and made significant savings on traditional consultancy fees.
This case study will show you how Carve Consulting benefited from the one-to-one guidance provided by its implementation coach, how it overcame some of the project's most challenging elements, important lessons about leadership and team engagement and why Carve Consulting was able to build the internal capacity to maintain its compliance post-certification.
If you intend to implement an ISMS for a small business with fewer than 20 employees, this case study is ideal.
You will learn why removes the need to invest significant time, money and effort in researching and acquiring the skill set necessary to undertake ISO 27001 certification by yourself.
Tribal supports the delivery of education, learning and training services around the world. Tribal needed ISO 27001 certification to support the delivery of its world-class education learning and training services.
Senior managers planned their ISMS based on an appropriately detailed risk assessment with help from IT Governance consultants.
The challenge was to apply the required controls identified in accordance with ISO 27001 best practice across several sites within a rapidly expanding and profitable enterprise, without slowing down operations.
Lanware, a technology partner to the financial world, achieved ISO 27001 certification with the help of IT Governance.
As an outsourcing provider, it was important that Lanware could demonstrate to all its financial services clients that its business and IT services were absolutely secure.
Lanware focused on finding a mature and internationally recognised solution that would bring information security directly under management control. ISO 27001 was selected and Lanware reached out to IT Governance to assist in its implementation across the business.
You can view more ISO 27001 case studies on our website.
IT Governance has helped hundreds of companies around the world achieve ISO 27001 compliance on time and within budget. We can help you, too.
We can deliver face-to-face consultancy and we can also provide cost-effective, online consultancy services anywhere across the GCC (Gulf Cooperation Council) countries.


Sam Russem, Director of the Smart Manufacturing Practice at Grantek, was a guest on Episode 5 of Control Amplified Podcast. Control Amplified Podcast is produced by Control Magazine.
On each episode Control Magazine executive editor Jim Montague is joined by experts to discuss important topics in the process control and automation field. Control Amplified Podcast goes beyond Control Magazine's print and online coverage to explore some of the underlying issues affecting users, system integrators, suppliers and other people and organizations in these industries.
This episode provides more context around the Control Magazine article Sam was recently featured in. That article outlined the technological improvements of process historians as they've migrated from boxes onto faster microprocessors and fully software-based formats. Click here to read a transcript of the Control Amplified Podcast episode.


text:
#ifndef _ASM_ALPHA_PARAM_H
#define _ASM_ALPHA_PARAM_H

#include <uapi/asm/param.h>

# undef HZ
# define HZ		CONFIG_HZ
# define USER_HZ	1024
# define CLOCKS_PER_SEC	USER_HZ	/* frequency at which times() counts */

#endif /* _ASM_ALPHA_PARAM_H */

redpajama_set_name: RedPajamaGithub


text:
This brilliant black comedy was first presented at PFA in November 1978; at its London Film Festival premiere, Derek Malcolm of the Manchester Guardian noted:
"Tomas Alea's The Last Supper is without much doubt the most striking Cuban film since Humberto Solas' Lucia - worthy to be put beside his earlier Memories of Underdevelopment. Set in the last years of the 18th century, it tells of an inevitably abortive attempt at paternalism by the religious owner of a sugar plantation who, during Holy Week, attempts to convince himself of his spiritual purity by performing acts of munificence towards his slaves. He gathers together twelve of them, one of whom has just had his ear cut off after an escape bid, for his own version of the Last Supper, casting himself in the role of Christ-like benefactor. This long sequence alone, during which he and the slaves talk and drink themselves into stupor, is worthy of Bunuel himself not only in force of argument but in its irony and humour. Good Friday, he proclaims, will be a day of rest. But he has not informed his brutal overseer, who is then held captive by the slaves to await confirmation of their master's instructions. It is then that the system betrays its true colors, and the ensuing revolt is cruelly repressed. The film is, quite simply, a masterwork of Latin-American cinema."
This page may by only partially complete. For additional information about this film, view the original entry on our archived site.


Charlie has come to the UK from Romania looking for his forever home – he was born on 7th May 2016. Charlie is a wonderful dog, but he does have some issues: these are being worked on, but his adopter will need to continue with his training – it will take time and patience. He loves people he knows and trusts, so a potential owner would need to come to the kennels so they could get to know one another. Charlie is strong and muscular – he needs lots of exercise. He is good with other dogs, but he's not suitable for homing with children under 16. He would do best with a single owner, or a couple. Charlie will be a challenge, but with the right help will become a loving and loyal companion. If you feel you could be the person Charlie needs, please contact the RRA – you will make a confused dog very happy!


Transcripts of courses taken and degrees received at Central Christian University University are maintained in the Record's Office. For more information on transcripts request, please click on the following link.
Enrollment verification is a service available to current and former Central Christian University students for a variety of purposes, including scholarships, employment, loans, and insurance.
Central Christian University's recent success belies its humble beginnings over a decade ago. In 2003, the Council Missionary Church of God began a small Christian university of fifty eight students and five professors.
By 2007, the school had 10 campuses worldwide, adding programs and garnering recognition from both mainstream culture and the world of academia. CCU also pioneered in establishing an educational institution in countries no Christian institution had done so, launching CCU in La Paz, Bolivia, and Port au Prince, Haiti.
Our goal was, has been, and will always be to make available the knowledge and wisdom of God through excellent education for pastors, leaders and professionals to not only become more effective in ministry but also teach and train others in the grace and knowledge acquired in these studies. With currently 27 campuses worldwide, we continue to pioneer, committing to this God-given mandate of impacting this world with the message of good news of Jesus Christ, educating and changing mentalities.
Central Christian University is located in the city of the world's best's theme parks. A thriving metropolis Orlando is now home to many students who desire to prepare and equip themselves in their desired area of study at CCU.
Central Christian University is sponsored by the Council Missionary Church of God, Orlando, FL. As a Christian university operated under the auspices of the Council, CCU is firmly committed to the evangelical position of its sponsoring denomination.
The Academic Sector of Central Christian University is made up of four faculties and schools: the Faculty of Arts & Sciences, the Andres Bello Faculty of Education, the School of Religious Studies, and the School of Certifications. There are 12 academic departments and 7 graduate areas of study within the faculties and schools.
Alongside traditional on-campus programs, Central Christian University's Online Division offers fully-online and hybrid programs (at both the Orlando campus and International centers) with today's adult learner in mind. Never sacrificing convenience for quality, the Online Division offers undergraduate, graduate and certificate programs in a certified, Christ-centered setting. This commitment to both academic excellence and unwavering faith is the reason Central Christian University has grown throughout the years.
The Global Engagement Program is one of the most unique and exciting opportunities that Central Christian University offers because it promotes students to travel and to study a culture different from their own. Every year, CCU offers between 25 and 30 cultural engagement trips, led by our very own credentialed faculty, as an economical and rewarding cross-cultural experience.
Service learning was added to the curriculum in 2014, with the purpose to prepare students in community work and involvement. Since its start, students have done than 4,000 hours of service. Students may complete their service requirement through service embedded or enhanced courses, departmental service projects, or service coordinated through Christian Care Counseling Center and Chaplains of Florida outside the curriculum. A central goal of service learning is for students to learn how to use their academic knowledge to help others flourish and to address the roots of systemic problems.


Will additional cardholder be notified when I change a lock or limit setting?
No, your additional cardholder won't be notified when a lock or limit setting is updated. They will be able to view what the lock and limit settings are in the CommBank app or NetBank.


text:
Microsoft's Latest AI Innovations In Office 365
May 4, 2020 | By Rakesh Reddy
Microsoft's commitment to artificial intelligence is driven by the conviction that an AI-powered Office 365 can help the modern workforce overcome some major emerging challenges – exponential growth of data, increasing time demands, increased security threats, etc. In the last few years, Microsoft has introduced several new AI-driven features and applications to Office 365 to better assist users and bring in more efficiency.
As a Microsoft Gold Partner, we are actively helping organizations leverage these new features and solutions and many of our customers are already seeing tangible value.
The latest AI innovations in Office 365 are aimed to make collating data, scheduling, sharing data, collaborating and interacting with people a lot easier.
This article elucidates on some of the new cutting-edge AI innovations by Microsoft in Office 365.
1. Outlook
Outlook has been revamped with many AI capabilities to amplify employees' skills. With Focused Inbox, users can screen trivial messages and only look at the most relevant information. Another feature helps users choose from suggested replies when responding with a short message.
'Play My Emails' in Outlook uses Cortana to narrate new emails intelligently, meaning, the feature summarizes and retrieves information like the sender, time sent, and email contents than endlessly read out all the details from top to bottom.
Scheduler in Outlook, powered by Cortana, is yet another intelligent feature that helps users to schedule meetings by instructing Cortana about the content, duration, timing, and location of the meeting using natural language. By accessing participants' calendar availability, Cortana will book the meeting when everyone is available. Scheduler is still in preview and will be rolled out in early 2020.
2. Excel
Microsoft Ideas, a prime AI feature in Excel, helps users to pick the right chart type for the data and identify outliers, patterns in data sets.
Using the 'Insert Data from Picture' feature in Excel's mobile application, users can now import analog data. By taking an image of data in the form of table, Excel can process this into a corresponding table on the spreadsheet.
3. PowerPoint
Live Captions and Subtitles in PowerPoint are the new cutting-edge features that use AI to provide captions and subtitles for presentations in real time. Captions and subtitles can be displayed in the spoken language or one of 60+ translated languages.
Presenter Coach is an AI powered recommendation engine that helps users improve their presentation skills by providing real-time on-screen feedback on speech metrics and inclusive language. It can also even give warnings when the user reads off from the slides. Presenter Coach also generates a report after the presentation that helps users to improve their delivery and learn from the feedback.
Ideas is another feature which assists in the creation of slides and presentations by making recommendations to generate polished slides and captivating motion effects.
4. Word
In Word, with the help of NLP and machine learning, Ideas can proofread documents in order to make contextually appropriate suggestions. Ideas brings together the power of deep learning to recommend different ways of writing a phrase. These features prove useful in improving the readability of the document.
5. Project Cortex
Project Cortex, powered by Microsoft Graph and AI, systematically arranges organization's information. AI analyzes content across teams by recognising various types of content and extracting useful information. This input is used to organize content that are classified under shared assets like projects, products, processes and customers.
A knowledge network is then created by Cortex by using relationships among topics, content, and people. New topic pages that are created and modified by users is managed by AI, where the machine automatically updates and organises data under appropriate segments. Project Cortex makes curating and sharing knowledge in the organisation with Wikipedia-like simplicity. Topic cards that are generated using Cortex provide quick access to information people on Outlook, Microsoft Teams, and Office.
6. Microsoft Stream
Microsoft Stream now employs AI in to eliminate focus disrupters that are common in video conferences like online meetings, training, or other modes of communications. AI is trained to detect all the present audio frequencies, isolate the speaker's voice, and mute all other background noises.
This allows users to concentrate and focus effectively which results in better communication, learning, and accessibility to content. With the new voice enhancement in Microsoft Stream, you can easily eliminate background noise with just one click. Microsoft Stream. With Microsoft Stream, employees can use facial recognition to seek within a video – jump to specific portions a person is speaking or reach to a point where a specific name is mentioned.
7. Microsoft Search
Microsoft Search leverages the AI capabilities of Bing and Microsoft Graph, one of the largest repositories of data about how people work. Microsoft Graph involves data that is accumulated from the public domain such as the internet, as well as internal data such as directories and policy manuals, that are only accessible to the employees of the company.
Backed by these features, Microsoft Search enables workers to find navigate and discover items across their organization's network of data aggregated in OneDrive and SharePoint. A new intelligent feature in Search, allows people within a company to search for people without having complete information about them by using keywords pertaining to their name and location. For example, "Ben, building 1".
8. My Analytics
Microsoft MyAnalytics is an AI-driven data analysis to help employees improve productivity and teamwork by providing insights into how a person works with teams, groups, and organization. Improving personal productivity that requires decision making on how to use personal time efficiently can be difficult without the aid of data.
Using MyAnalytics, users can imbibe efficient work habits and gain insights on expenditure of time at work and across meetings, measure email effectiveness and assess the time they designate as 'focus time' and 'after-hours' work. MyAnalytics is a great tool to understand collaborations, monitor progress and set productivity goals.
9. Power Automate
Power Automate, a part of Microsoft's Power Platform, enables quick automation of workflows, and application of business logic to simplify tasks. You can create intelligent and time-saving workflows and build end-to-end business solutions by connecting Office 365, Dynamics 365, Azure, and virtually all your other enterprise apps. The solution comes with built-in AI capabilities which allow you to improve productivity and focus more on strategic and high-value tasks.
With an aim to democratize AI and improve efficiency in day-to-day employee workflows, Microsoft is embedding intelligence into Office 365 applications. The age of digital transformation and the emergence of the modern workplace are posing new challenges and providing new opportunities for organizations. And the adoption of new AI features in Office 365 is becoming imperative for Microsoft customers to stay productive and competitive. With all these recent AI innovations, It's exciting to see what more Microsoft will introduce in Ignite 2020.
Acuvate is a Microsoft Gold Partner and helps organizations in effective implementation and faster adoption of Office 365. If you'd like to learn more about this topic, please feel free to get in touch with one of our Office365 consultants for a personalized consultation.
5 Tips to Maximize Office 365 Adoption
Office 365 chatbots
Office 365 Intranet
TAGS : AI AI Bots Artificial Intelligence Microsoft Office 365 Office 365 Office 365 Adoption Power Apps
Rakesh Reddy
Rakesh Reddy is our co-founder and a serial entrepreneur. A mechanical engineer by education, his business vision and direction as Chairman & CEO drives us to excellence. An avid team player, he works with his executive team to trigger growth for Acuvate across geographies and business areas. His business acumen, strategy and planning skills catalyzed the growth of Acuvate since its inception. A natural leader, he has been able to successfully bootstrap his companies, help win customers and successfully constitute company's board and a robust leadership team.
6 Reasons Why You Should Migrate To SharePoint Onl


text:
U.S. Fintech Vennfi Raises $2.3 Million Through Seed Funding Round
November 24, 2020 @ 9:28 am By Samantha Hurst
Vennfi, a U.S.-based fintech focused on tax-exempt payments and the creator of Charityvest, reportedly secured $2.3 million through its seed funding round. According to FinsMes, the round, which comes just a little over six months after the startup raised $1.1 million through its pre-seed round, was led by Tom Blaisdell, formerly of DCM Ventures, with participation from Teamworthy Ventures, Duro.vc, Sovereign's Capital, and Promus Ventures.
As previously reported, Charityvest focuses on enhancing the giving experience for donors by creating "Charity Funds," which is a fund in which money input is instantly tax-deductible and then can be later sent, digitally, to any 501(c)(3) organization at any time.
"Charityvest is designed to make the process of giving free–or as close as possible–for everyone. It does this by functioning like a bank. Some portion of the aggregate capital in the platform will be invested in extremely low-risk securities to create a financial return."
Vennfi also previously noted that in addition to providing charitable giving funds to individuals or families, it plans to grow by providing businesses the ability to sponsor tax-advantaged charitable giving funds for employees and provide churches with a free digital solution to collect donations from members. The company is planning to launch its zero-fee stock contributions, allowing users to make donations of appreciated publicly-traded stocks and ETFs, directly to their fund, from any brokerage on December 1st.
U.S. Fintech Vennfi Secures $1.1 Million Through Pre-Seed Funding Round
U.S. Fintech Vesica Raises $2.1 Million Through Seed Funding Round
U.S. Fintech Relay Payments Raises $43 Million in Funding Over the Past Six Months
U.S. Fintech Self Financial Secures $40 Million Through Series D Funding Round Led By Meritech Capital
U.S. Fintech Boast.ai Secures $23 Million Though Series A Funding Round Led By Radian Capital
F1 Payments Scores Recapitalization & Growth Investment From York Capital Management
U.S. Fintech Obligo Raises $15.5 Million Through Series A Investment Round
U.S. Fintech Amicus Announces Additional $8.7 Million Through Series B Funding Rond
U.S. Fintech Possible Secures $11 Million Through Series B Funding Round Led By Union Square Ventures
B2B fintech Tipalti Secures $150 Million Through Series E; Brings Valuation to More Than $2 Billion
U.S. Fintech Greenlight Scores $215 Million Through Series C Funding Round Led By Canapi Ventures & TTV Capital; Brings Valuation to $1.2 Billion
Petal Secures $55 Million Through Series C Funding Round Led By Valar Ventures
U.S. Fintech Affirm Secures $500 Million Through Series G Funding Round Led By GIC & Durable Capital Partners
U.S. Fintech Salaryo Raises $5.8 Million Through Latest Investment Round to Provide Financing Relief For SMEs Affected By the COVID-19 Pandemic
U.S. Fintech Esusu Raises $2.3 Million in Seed Extension Funding
This entry was posted in Fintech and tagged charity, charityvest, fintech, investment, u.s., united states, vennfi. Bookmark the permalink.


text:
package org.apache.pig.tools.pigstats;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Properties;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.mapred.JobClient;
import org.apache.hadoop.mapred.JobID;
import org.apache.hadoop.mapred.jobcontrol.Job;
import org.apache.pig.ExecType;
import org.apache.pig.PigException;
import org.apache.pig.PigRunner.ReturnCode;
import org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.JobControlCompiler;
import org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceOper;
import org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.NativeMapReduceOper;
import org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.plans.MROpPlanVisitor;
import org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.plans.MROperPlan;
import org.apache.pig.classification.InterfaceAudience;
import org.apache.pig.classification.InterfaceStability;
import org.apache.pig.impl.PigContext;
import org.apache.pig.impl.logicalLayer.FrontendException;
import org.apache.pig.impl.plan.DependencyOrderWalker;
import org.apache.pig.impl.plan.VisitorException;
import org.apache.pig.impl.util.SpillableMemoryManager;
import org.apache.pig.newplan.BaseOperatorPlan;
import org.apache.pig.newplan.Operator;
import org.apache.pig.newplan.OperatorPlan;
import org.apache.pig.newplan.PlanVisitor;
import org.apache.pig.tools.pigstats.JobStats.JobState;

/**
 * PigStats encapsulates the statistics collected from a running script.
 * It includes status of the execution, the DAG of its MR jobs, as well as
 * information about outputs and inputs of the script.
 */

@InterfaceAudience.Public
@InterfaceStability.Evolving
public final class PigStats {

    private static final Log LOG = LogFactory.getLog(PigStats.class);

    private static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";

    private static ThreadLocal<PigStats> tps = new ThreadLocal<PigStats>();

    private PigContext pigContext;

    private JobClient jobClient;

    private JobControlCompiler jcc;

    private JobGraph jobPlan;

    // map MR job id to MapReduceOper
    private Map<String, MapReduceOper> jobMroMap;

    private Map<MapReduceOper, JobStats> mroJobMap;

    private long startTime = -1;
    private long endTime = -1;

    private String userId;

    private int returnCode = ReturnCode.UNKNOWN;
    private String errorMessage;
    private int errorCode = -1;

    public static PigStats get() {
        if (tps.get() == null) tps.set(new PigStats());
        return tps.get();
    }

    static PigStats start() {
        tps.set(new PigStats());
        return tps.get();
    }

    /**
     * JobGraph is an {@link OperatorPlan} whose members are {@link JobStats}
     */
    public static class JobGraph extends BaseOperatorPlan implements Iterable<JobStats>{

        @Override
        public String toString() {
            JobGraphPrinter jp = new JobGraphPrinter(this);
            try {
                jp.visit();
            } catch (FrontendException e) {
                LOG.warn("unable to print job plan", e);
            }
            return jp.toString();
        }

        public Iterator<JobStats> iterator() {
            return new Iterator<JobStats>() {
                private Iterator<Operator> iter = getOperators();
                @Override
                public boolean hasNext() {
                    return iter.hasNext();
                }
                @Override
                public JobStats next() {
                    return (JobStats)iter.next();
                }
                @Override
                public void remove() {}
            };
        }

        boolean isConnected(Operator from, Operator to) {
            List<Operator> succs = null;
            succs = getSuccessors(from);
            if (succs != null) {
                for (Operator succ: succs) {
                    if (succ.getName().equals(to.getName())
                            || isConnected(succ, to)) {
                        return true;
                    }
                }
            }
            return false;
        }

        List<JobStats> getSuccessfulJobs() {
            ArrayList<JobStats> lst = new ArrayList<JobStats>();
            Iterator<JobStats> iter = iterator();
            while (iter.hasNext()) {
                JobStats js = iter.next();
                if (js.getState() == JobState.SUCCESS) {
                    lst.add(js);
                }
            }
            Collections.sort(lst, new JobComparator());
            return lst;
        }

        List<JobStats> getFailedJobs() {
            ArrayList<JobStats> lst = new ArrayList<JobStats>();
            Iterator<JobStats> iter = iterator();
            while (iter.hasNext()) {
                JobStats js = iter.next();
                if (js.getState() == JobState.FAILED) {
                    lst.add(js);
                }
            }
            return lst;
        }
    }

    /**
     * This class builds the job DAG from a MR plan
     */
    private class JobGraphBuilder extends MROpPlanVisitor {

        public JobGraphBuilder(MROperPlan plan) {
            super(plan, new DependencyOrderWalker<MapReduceOper, MROperPlan>(
                    plan));
            jobPlan = new JobGraph();
            mroJobMap = new HashMap<MapReduceOper, JobStats>();
        }

        @Override
        public void visitMROp(MapReduceOper mr) throws VisitorException {
            JobStats js = new JobStats(
                    mr.getOperatorKey().toString(), jobPlan);
            jobPlan.add(js);
            List<MapReduceOper> preds = getPlan().getPredecessors(mr);
            if (preds != null) {
                for (MapReduceOper pred : preds) {
                    JobStats jpred = mroJobMap.get(pred);
                    if (!jobPlan.isConnected(jpred, js)) {
                        jobPlan.connect(jpred, js);
                    }
                }
            }
            mroJobMap.put(mr, js);
        }
    }

    /**
     * This class prints a JobGraph
     */
    static class JobGraphPrinter extends PlanVisitor {

        StringBuffer buf;

        protected JobGraphPrinter(OperatorPlan plan) {
            super(plan,
                    new org.apache.pig.newplan.DependencyOrderWalker(
                            plan));
            buf = new StringBuffer();
        }

        public void visit(JobStats op) throws FrontendException {
            buf.append(op.getJobId());
            List<Operator> succs = plan.getSuccessors(op);
            if (succs != null) {
                buf.append("\t->\t");
                for (Operator p : succs) {
                    buf.append(((JobStats)p).getJobId()).append(",");
                }
            }
            buf.append("\n");
        }

        @Override
        public String toString() {
            buf.append("\n");
            return buf.toString();
        }
    }

    private static class JobComparator implements Comparator<JobStats> {
        @Override
        public int compare(JobStats o1, JobStats o2) {
            return o1.getJobId().compareTo(o2.getJobId());
        }
    }

    public boolean isSuccessful() {
        return (returnCode == ReturnCode.SUCCESS);
    }

    /**
     * Return codes are defined in {@link ReturnCode}
     */
    public int getReturnCode() {
        return returnCode;
    }

    public String getErrorMessage() {
        return errorMessage;
    }

    /**
     * Returns the error code of {@link PigException}
     */
    public int getErrorCode() {
        return errorCode;
    }

    /**
     * Returns the properties associated with the script
     */
    public Properties getPigProperties() {
        if (pigContext == null) return null;
        return pigContext.getProperties();
    }

    /**
     * Returns the DAG of the MR jobs spawned by the script
     */
    public JobGraph getJobGraph() {
        return jobPlan;
    }

    /**
     * Returns the list of output locations in the script
     */
    public List<String> getOutputLocations() {
        ArrayList<String> locations = new ArrayList<String>();
        for (OutputStats output : getOutputStats()) {
            locations.add(output.getLocation());
        }
        return Collections.unmodifiableList(locations);
    }

    /**
     * Returns the list of output names in the script
     */
    public List<String> getOutputNames() {
        ArrayList<String> names = new ArrayList<String>();
        for (OutputStats output : getOutputStats()) {
            names.add(output.getName());
        }
        return Collections.unmodifiableList(names);
    }

    /**
     * Returns the number of bytes for the given output location,
     * -1 for invalid location or name.
     */
    public long getNumberBytes(String location) {
        if (location == null) return -1;
        String name = new Path(location).getName();
        long count = -1;
        for (OutputStats output : getOutputStats()) {
            if (name.equals(output.getName())) {
                count = output.getBytes();
                break;
            }
        }
        return count;
    }

    /**
     * Returns the number of records for the given output location,
     * -1 for invalid location or name.
     */
    public long getNumberRecords(String location) {
        if (location == null) return -1;
        String name = new Path(location).getName();
        long count = -1;
        for (OutputStats output : getOutputStats()) {
            if (name.equals(output.getName())) {
                count = output.getNumberRecords();
                break;
            }
        }
        return count;
    }

    /**
     * Returns the alias associated with this output location
     */
    public String getOutputAlias(String location) {
        if (location == null) return null;
        String name = new Path(location).getName();
        String alias = null;
        for (OutputStats output : getOutputStats()) {
            if (name.equals(output.getName())) {
                alias = output.getAlias();
                break;
            }
        }
        return alias;
    }

    /**
     * Returns the total spill counts from {@link SpillableMemoryManager}.
     */
    public long getSMMSpillCount() {
        Iterator<JobStats> it = jobPlan.iterator();
        long ret = 0;
        while (it.hasNext()) {
            ret += it.next().getSMMSpillCount();
        }
        return ret;
    }

    /**
     * Returns the total number of bags that spilled proactively
     */
    public long getProactiveSpillCountObjects() {
        Iterator<JobStats> it = jobPlan.iterator();
        long ret = 0;
        while (it.hasNext()) {
            ret += it.next().getProactiveSpillCountObjects();
        }
        return ret;
    }

    /**
     * Returns the total number of records that spilled proactively
     */
    public long getProactiveSpillCountRecords() {
        Iterator<JobStats> it = jobPlan.iterator();
        long ret = 0;
        while (it.hasNext()) {
            ret += it.next().getProactiveSpillCountRecs();
        }
        return ret;
    }

    /**
     * Returns the total bytes written to user specified HDFS
     * locations of this script.
     */
    public long getBytesWritten() {
        Iterator<JobStats> it = jobPlan.iterator();
        long ret = 0;
        while (it.hasNext()) {
            long n = it.next().getBytesWritten();
            if (n > 0) ret += n;
        }
        return ret;
    }

    /**
     * Returns the total number of records in user specified output
     * locations of this script.
     */
    public long getRecordWritten() {
        Iterator<JobStats> it = jobPlan.iterator();
        long ret = 0;
        while (it.hasNext()) {
            long n = it.next().getRecordWrittern();
            if (n > 0) ret += n;
        }
        return ret;
    }

    public String getHadoopVersion() {
        return ScriptState.get().getHadoopVersion();
    }

    public String getPigVersion() {
        return ScriptState.get().getPigVersion();
    }

    public String getScriptId() {
        return ScriptState.get().getId();
    }

    public String getFeatures() {
        return ScriptState.get().getScriptFeatures();
    }

    public long getDuration() {
        return (startTime > 0 && endTime > 0) ? (endTime - startTime) : -1;
    }

    /**
     * Returns the number of MR jobs for this script
     */
    public int getNumberJobs() {
        return jobPlan.size();
    }

    public List<OutputStats> getOutputStats() {
        List<OutputStats> outputs = new ArrayList<OutputStats>();
        Iterator<JobStats> iter = jobPlan.iterator();
        while (iter.hasNext()) {
            for (OutputStats os : iter.next().getOutputs()) {
                outputs.add(os);
            }
        }
        return Collections.unmodifiableList(outputs);
    }

    public List<InputStats> getInputStats() {
        List<InputStats> inputs = new ArrayList<InputStats>();
        Iterator<JobStats> iter = jobPlan.iterator();
        while (iter.hasNext()) {
            for (InputStats is : iter.next().getInputs()) {
                inputs.add(is);
            }
        }
        return Collections.unmodifiableList(inputs);
    }

    private PigStats() {
        jobMroMap = new HashMap<String, MapReduceOper>();
        jobPlan = new JobGraph();
    }

    void start(PigContext pigContext, JobClient jobClient,
            JobControlCompiler jcc, MROperPlan mrPlan) {

        if (pigContext == null || jobClient == null || jcc == null) {
            LOG.warn("invalid params: " + pigContext + jobClient + jcc);
            return;
        }

        this.pigContext = pigContext;
        this.jobClient = jobClient;
        this.jcc = jcc;

        // build job DAG with job ids assigned to null
        try {
            new JobGraphBuilder(mrPlan).visit();
        } catch (VisitorException e) {
            LOG.warn("unable to build job plan", e);
        }

        startTime = System.currentTimeMillis();
        userId = System.getProperty("user.name");
    }

    void stop() {
        endTime = System.currentTimeMillis();
        int m = getNumberSuccessfulJobs();
        int n = getNumberFailedJobs();

        if (n == 0 && m > 0 && m == jobPlan.size()) {
            returnCode = ReturnCode.SUCCESS;
        } else if (m > 0 && m < jobPlan.size()) {
            returnCode = ReturnCode.PARTIAL_FAILURE;
        } else {
            returnCode = ReturnCode.FAILURE;
        }
    }

    boolean isInitialized() {
        return startTime > 0;
    }

    JobClient getJobClient() {
        return jobClient;
    }

    JobControlCompiler getJobControlCompiler() {
        return jcc;
    }

    void setReturnCode(int returnCode) {
        this.returnCode = returnCode;
    }

    @SuppressWarnings("deprecation")
    JobStats addJobStats(Job job) {
        MapReduceOper mro = null;
        JobID jobId = job.getAssignedJobID();
        if (jobId != null) {
            mro = jobMroMap.get(jobId.toString());
        } else {
            mro = jobMroMap.get(job.toString());
        }
        if (mro == null) {
            LOG.warn("unable to get MR oper for job: "
                    + ((jobId == null) ? job.toString() : jobId.toString()));
            return null;
        }
        JobStats js = mroJobMap.get(mro);

        js.setAlias(mro);
        js.setConf(job.getJobConf());
        return js;
    }

    @SuppressWarnings("deprecation")
    public JobStats addJobStatsForNative(NativeMapReduceOper mr) {
        JobStats js = mroJobMap.get(mr);
        js.setId(new JobID(mr.getJobId(), NativeMapReduceOper.getJobNumber()));
        js.setAlias(mr);

        return js;
    }

    void display() {
        if (returnCode == ReturnCode.UNKNOWN) {
            LOG.warn("unknown return code, can't display the results");
            return;
        }
        if (pigContext == null) {
            LOG.warn("unknown exec type, don't display the results");
            return;
        }

        // currently counters are not working in local mode - see PIG-1286
        ExecType execType = pigContext.getExecType();
        if (execType == ExecType.LOCAL) {
            LOG.info("Detected Local mode. Stats reported below may be incomplete");
        }

        SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT);
        StringBuilder sb = new StringBuilder();
        sb.append("\nHadoopVersion\tPigVersion\tUserId\tStartedAt\tFinishedAt\tFeatures\n");
        sb.append(getHadoopVersion()).append("\t").append(getPigVersion()).append("\t")
            .append(userId).append("\t")
            .append(sdf.format(new Date(startTime))).append("\t")
            .append(sdf.format(new Date(endTime))).append("\t")
            .append(getFeatures()).append("\n");
        sb.append("\n");
        if (returnCode == ReturnCode.SUCCESS) {
            sb.append("Success!\n");
        } else if (returnCode == ReturnCode.PARTIAL_FAILURE) {
            sb.append("Some jobs have failed! Stop running all dependent jobs\n");
        } else {
            sb.append("Failed!\n");
        }
        sb.append("\n");

        if (returnCode == ReturnCode.SUCCESS
                || returnCode == ReturnCode.PARTIAL_FAILURE) {
            sb.append("Job Stats (time in seconds):\n");
            if (execType == ExecType.LOCAL) {
                sb.append(JobStats.SUCCESS_HEADER_LOCAL).append("\n");
            } else {
                sb.append(JobStats.SUCCESS_HEADER).append("\n");
            }
            List<JobStats> arr = jobPlan.getSuccessfulJobs();
            for (JobStats js : arr) {
                sb.append(js.getDisplayString(execType == ExecType.LOCAL));
            }
            sb.append("\n");
        }
        if (returnCode == ReturnCode.FAILURE
                || returnCode == ReturnCode.PARTIAL_FAILURE) {
            sb.append("Failed Jobs:\n");
            sb.append(JobStats.FAILURE_HEADER).append("\n");
            List<JobStats> arr = jobPlan.getFailedJobs();
            for (JobStats js : arr) {
                sb.append(js.getDisplayString(execType == ExecType.LOCAL));
            }
            sb.append("\n");
        }
        sb.append("Input(s):\n");
        for (InputStats is : getInputStats()) {
            sb.append(is.getDisplayString(execType == ExecType.LOCAL));
        }
        sb.append("\n");
        sb.append("Output(s):\n");
        for (OutputStats ds : getOutputStats()) {
            sb.append(ds.getDisplayString(execType == ExecType.LOCAL));
        }

        if (execType != ExecType.LOCAL) {
            sb.append("\nCounters:\n");
            sb.append("Total records written : " + getRecordWritten()).append("\n");
            sb.append("Total bytes written : " + getBytesWritten()).append("\n");
            sb.append("Spillable Memory Manager spill count : "
                    + getSMMSpillCount()).append("\n");
            sb.append("Total bags proactively spilled: "
                    + getProactiveSpillCountObjects()).append("\n");
            sb.append("Total records proactively spilled: "
                    + getProactiveSpillCountRecords()).append("\n");
        }

        sb.append("\nJob DAG:\n").append(jobPlan.toString());

        LOG.info("Script Statistics: \n" + sb.toString());
    }

    @SuppressWarnings("deprecation")
    void mapMROperToJob(MapReduceOper mro, Job job) {
        if (mro == null) {
            LOG.warn("null MR operator");
        } else {
            JobStats js = mroJobMap.get(mro);
            if (js == null) {
                LOG.warn("null job stats for mro: " + mro.getOperatorKey());
            } else {
                JobID id = job.getAssignedJobID();
                js.setId(id);
                if (id != null) {
                    jobMroMap.put(id.toString(), mro);
                } else {
                    jobMroMap.put(job.toString(), mro);
                }
            }
        }
    }

    void setErrorMessage(String errorMessage) {
        this.errorMessage = errorMessage;
    }

    void setErrorCode(int errorCode) {
        this.errorCode = errorCode;
    }

    void setBackendException(Job job, Exception e) {
        if (e instanceof PigException) {
            LOG.error("ERROR " + ((PigException)e).getErrorCode() + ": "
                    + e.getLocalizedMessage());
        } else if (e != null) {
            LOG.error("ERROR: " + e.getLocalizedMessage());
        }

        if (job.getAssignedJobID() == null || e == null) {
            LOG.debug("unable to set backend exception");
            return;
        }
        String id = job.getAssignedJobID().toString();
        Iterator<JobStats> iter = jobPlan.iterator();
        while (iter.hasNext()) {
            JobStats js = iter.next();
            if (id.equals(js.getJobId())) {
                js.setBackendException(e);
                break;
            }
        }
    }

    PigContext getPigContext() {
        return pigContext;
    }

    int getNumberSuccessfulJobs() {
        Iterator<JobStats> iter = jobPlan.iterator();
        int count = 0;
        while (iter.hasNext()) {
            if (iter.next().getState() == JobState.SUCCESS) count++;
        }
        return count;
    }

    int getNumberFailedJobs() {
        Iterator<JobStats> iter = jobPlan.iterator();
        int count = 0;
        while (iter.hasNext()) {
            if (iter.next().getState() == JobState.FAILED) count++;
        }
        return count;
    }

}


text:
Automation Anywhere (AA) Reviews
145 reviews42 discussions
Technical Support Engineer at Wipro Limited
Provides many helpful features to improve efficiency and save time, in particular with business documents
"The tutorials that are available from Automation Anywhere are very helpful for newbies to learn the platform and get going with the tool."
"Automation Anywhere is not fully compatible with browsers other than Internet Explorer while working with web extraction."
We use this solution for all the business processes and mainly to integrate with Excel files, our database, and our ERP.
We basically process data that are in form of Excel, PDF, or CSV formatted files. We also interact with information that is stored in our database.
Generally, we automate a lot of processes that are repetitive and time-consuming. We work mainly with processing data, thus reducing the time needed to do the process manually. The workforce is also reduced for completing simple tasks like logging in to a forum, as well as complicated tasks like banking or finance. All of these all possible.
Automation Anywhere has helped us in many ways and is one of the best RPA tools. AA has helped us to spend less time on repetitive tasks by automating them.
The two most important aspects are saving time and saving effort by our workforce. Repetitive work and rule-based tasks are the areas that are being replaced by bots.
The tutorials that are available from Automation Anywhere are very helpful for newbies to learn the platform and get going with the tool.
It is very difficult to pin down one valuable feature because each and every one of them is valuable in its own way.
I find that IQ Bot is the most amazing feature, as it helps us to work more efficiently with business documents.
Object Cloning is another good feature that helps us to save time.
Metabot is another valuable feature that exists in AA.
PDF integration is another important feature that avoids using IQ bots, and using the OCR helps us to extract text from an image.
I have had some difficulty with OCR extraction, which could be a little better.
Automation Anywhere is not fully compatible with browsers other than Internet Explorer while working with web extraction.
Maybe there could be more options added for PDF integration.
Having a few practical use cases added to online learning would be helpful for newbies.
Other than these, I don't see other difficulties. In terms of extra features, they are adding them day by day to make for the smoother automation of processes.
We have been using Automation Anywhere for the past seven months.
Disclosure: I am a real user, and this review is based on my own experience and opinions.
Subrina Mahmood
Director, Corporate Financial Planning & Analysis at a financial services firm with 10,001+ employees
The advantage of Automation Anywhere is that you don't necessarily have to come from a programming background
"The advantage of Automation Anywhere is that you don't necessarily have to come from a programming background."
"Because we are very new to our process, so we're still sort of working through it."
The platform is amazing. One of the things that we were worried about when we initially started looking into RPA was having the right people to be able to cope. The advantage of Automation Anywhere is that you don't necessarily have to come from a programming background. It's very easy to pick up. Within the team, we were able to train people within a very short period of time and start our process in as little as two months.
For now, because we just started using Automation Anywhere recently, it's probably a little difficult for me to answer that (room for improvement). But from the feedback that I've received from the team, it is a great tool. We're definitely looking forward to using it more in the future.
Because we are very new to our process, so we're still sort of working through it. One of the features that I just learned about in this particular conference yesterday was about the Enterprise addition that they're just coming out with. I think in about six or seven days. So, that's very exciting because I don't particularly come from a programming background. I think it'll be really easy for us to continue to do more RPA-related processes, and not necessarily have to worry about having the right programmer on the team, or programmers, for that matter.
For the enterprise, we've been using Automation ( /categories/security-orchestration-automation-and-response-soar ) Anywhere for a few years. In my specific team, we've been using the platform for about eight months now.
It was very easy. The Automation Anywhere community is extremely helpful with answering any questions that we had throughout the process, or any sort of concerns that we had. So, it really wasn't difficult at all.
I would highly recommend it. If RPA is something that they're doing for the first time, Automation Anywhere is definitely one of the best in the industry that they should stick to.
I would definitely give it a ten (out of ten).
Disclosure: PeerSpot contacted the reviewer to collect the review and to validate authenticity. The reviewer was referred by the vendor, but the review is not subject to editing or approval by the vendor. The reviewer's company has a business relationship with this vendor other than being a customer: Partner.
Free Report: Automation Anywhere (AA) Reviews and More
Learn what your peers think about Automation Anywhere (AA). Get advice and tips from experienced pros sharing their opinions. Updated: January 2022.
Senior Software Engineer at Thirdware Solution Ltd.
Saves our clients time using IQ Bot and the powerful scheduling options
"IQ Bot is the most important feature and it has been extensively used by our clients."
"I feel A2019 is still not completely ready and the discontinuing of version 11 is a negative impact for all of the users and clients."
I work as an RPA developer where I use the Automation Anywhere software.
We work with many clients, wherein we automate their processes. We get positive feedback from the client regarding the processes that we have developed. It saves a lot of their manual time and most of their work is done by the bot, without any human intervention. So far, we have all positive views.
IQ Bot is the most important feature and it has been extensively used by our clients. With all of the new features of IQ bot, I feel it is the most utilized component of Automation Anywhere.
The scheduling/triggering of the bots from the CR, without going to the actual environment and starting the bot, is an interesting feature.
I feel A2019 is still not completely ready and the discontinuing of version 11 is a negative impact for all of the users and clients. I feel version 11 should still be continued and it should be the client's choice whether they want to buy version 11 or A2019.
I have been using automation anywhere for the past two and a half years.
I have not used another RPA, although I have worked on several versions of Automation Anywhere. I have developed in version 10, version 11, and currently on A2019.
Although I'm new to the A2019 version, I find that version 11 was the most user-friendly version of all.
The price of this product is good.
We did not evaluate other options before choosing Automation Anywhere.
If public cloud, private cloud, or hybrid cloud, which cloud provider do you use?
Lead Engineer at a financial services firm with 10,001+ employees
Improved our efficiency and saved on manual hours
"The most valuable feature is the task bots because we found that cognitive functionality can be improvised."
"Scaling from small to medium automation works well, but if building out very big applications, sometimes the code can be too lengthy and uncontrollable."
I use this solution to script and update website data and work with databases such as SQL. We also use IQ Bot extensively to script data from PDF files.
AA has improved our efficiency and saved on manual hours because no manual interaction is required.
The most valuable feature is the task bots because we found that cognitive functionality can be improvised.
An area for improvement would be that, once the code goes beyond 1,000 lines, it becomes really tough for a programmer to keep track of what is happening with the variables. I think they should add some kind of inbuilt modularization to help programmers keep track of what is happening.
I've been using this solution for two-and-a-half years, and we switched to A360 a couple of months ago.
There are some bugs in the system, but AA's stability is improving day by day.
I think scaling from small to medium automation works well, but if building out very big applications, sometimes the code can be too lengthy and uncontrollable.
How are customer service and support?
AA's technical support can vary - most of the time, it's good, but sometimes it's tough to get your issue addressed.
I implemented using an in-house team, with support available from AA if required.
We evaluated UiPath.
I'd rate this product as eight out of ten.
KinjalDangeria
Director Of Services at a tech services company with 1,001-5,000 employees
Stable, scalable, and easy to use
Automation Anywhere is primarily useful for any processes with repetitive data entry. For example, supplier invoice processing. This solution can be deployed on-prem as well as on the cloud.
Automation Anywhere is stable, scalable, and easy to use.
The product's technical support could use improvement. I can't think of any additional features I would like to see. The existing features are okay.
We have been providing Automation Anywhere for over four years.
Automation Anywhere is very stable.
This product is very scalable. The number…
The product's technical support could use improvement.
I can't think of any additional features I would like to see. The existing features are okay.
This product is very scalable.
The number of customers we have using this solution exceeds 50.
Automation Anywhere's tech support could be more knowledgeable.
The installation is straightforward. It usually takes under two to three hours. Full deployment can take anywhere between four to twelve weeks for one process automation. For deployment and maintenance, we have a team of roughly three to four: one project lead, one solution architect, one BA, and one developer.
We implement this solution through an in-house team. We are IT service providers and partners of Automation Anywhere, so we provide this solution to customers.
There is an annual subscription for Automation Anywhere.
I rate Automation Anywhere a nine out of ten, and would recommend it to others.
Disclosure: My company has a business relationship with this vendor other than being a customer: Partner
Last updated: Dec 6, 2021
Manohar-Reddy
Performance & Functional Automation Specialist at a pharma/biotech company with 10,001+ employees
Lot's of room for improvement; not customer-friendly
"The technical support is good. We have not had any issues."
"The initial setup is difficult because Automation Anywhere does not have a GitHub integration. They need to build a patch for that."
Automation Anywhere has a lot of room for improvement. It is not customer-friendly. They are always rolling out patches. They have a lot of limitations.
We have been using Automation Anywhere for the past three years.
Stability-wise, Automation Anywhere is stable, but that is what an end solution should be. It should be user-friendly and accessible, particularly when it comes to automation.
The technical support is good. We have not had any issues.
Before Automation Anywhere, we were working on HP products, like QTP, and then LoadRunner.
The initial setup is difficult because Automation Anywhere does not have a GitHub integration. They need to build a patch for that. From the end point users' point of view, it leaves a bad impression.
Automation Anywhere's price is a little expensive. Moreover, it comes on like a single/set license. It should come in perpetual licenses. If a license is not getting used, then it has to be switched over to some other process. In cases like this, Automation Anywhere does not come up. I think they lose a lot of business because they do not use a perpetual model.
Mike McGaha
Manager - Engineering, Automation CoE at KPMG
Saves time and improves quality of mundane manual tasks, and the support for Excel is beneficial
"Using this solution has freed internal operations employees to do more "human value-add" work by removing mundane manual tasks."
"We would like to have a better debugging facility."
Our primary use case is automation development supporting internal business operations at KPMG. We have 100+ live automations, with v10 and v11 deployments.
Using this solution has freed internal operations employees to do more "human value-add" work by removing mundane manual tasks. It has improved the quality of these tasks through automation and enabled us to do things we couldn't have previously done due to time and cost.
The most valuable feature so far is Task bot deployment. We hope to expand to IQ Bot this year.
Automation Anywhere's interaction with Excel is a key benefit.
Currently, Automation Anywhere's debugging functionality is minimal. Most notable is that it works on only the top-level task (not on sub-tasks called by the top-level task). This limits its practical usefulness. Increasing the robustness of the debugging functionality would be very helpful.
Additionally, implmentation of a "global" variable concept (variables shared across tasks) would be very useful. AA's variable mapping between tasks is cumbersome.
We have been using Automation Anywhere for three and a half years.
Babjee Vangipurapu
Senior Analyst at Capgemini
Good automation with PDFs and has helped increase our productivity significantly
"The ROI on major bots has been phenomenal."
"Excel, Outlook, and Word automation are very difficult with V11."
We primarily use this product for Web Applications, Outlook, and Excel.
It helped to increase productivity in a commendable manner.
The most valuable feature is PDF automation, where we can automate templated PDFs with almost 100% accuracy.
DOMX path support for identifying the web elements is helpful.
The Control room features, such as pooling devices, Queues, and the secure environment, are also valuable.
Commands in Excel, Outlook, and Word automation are very limited and hence facing difficulties automating complex requirements for the above applications with V11 version.
We have been using Automation Anywhere for two years.
Relatively the installation is complex compared to other competing technologies. Lot of things has to be worked around for Control room setup and for starting the bot development like user creation and specific roles getting assigned etc...
I've installed it on my own using installation guide. But a lot more things are involved while installing
The ROI on major bots has been phenomenal.
Disclosure: My company has a business relationship with this vendor other than being a customer:
UiPath vs Automation Anywhere (AA)
Microsoft Power Automate vs Automation Anywhere (AA)
Blue Prism vs Automation Anywhere (AA)
Kryon RPA
Kryon RPA vs Automation Anywhere (AA)
IBM Robotic Process Automation (RPA)
IBM Robotic Process Automation (RPA) vs Automation Anywhere (AA)
Pega Robotic Process Automation
Pega Robotic Process Automation vs Automation Anywhere (AA)
AutomationEdge
AutomationEdge vs Automation Anywhere (AA)
Tricentis Tosca vs Automation Anywhere (AA)
ABBYY FlexiCapture
ABBYY FlexiCapture vs Automation Anywhere (AA)
Kofax RPA vs Automation Anywhere (AA)
WorkFusion
WorkFusion vs Automation Anywhere (AA)
EdgeVerve AssistEdge RPA
EdgeVerve AssistEdge RPA vs Automation Anywhere (AA)
Selenium HQ
Selenium HQ vs Automation Anywhere (AA)
WinAutomation by Softomotive
WinAutomation by Softomotive vs Automation Anywhere (AA)
BotFarm
BotFarm vs Automation Anywhere (AA)
See all Automation Anywhere (AA) alternatives
Download our free Automation Anywhere (AA) Report and get advice and tips from experienced pros sharing their opinions.
How good is Automation Anywhere for RPA processes?
IBM digital business automation with UiPath vs IBM RPA with Automation Anywhere?
RPA Governance and Business Continuity requirements for a large multi-national corporate financial services provider
What are common issues faced in automation of processes with Automation Anywhere using Legacy Application?
How is Automation Anywhere compared to Microsoft Power Automate?
How would you compare Celonis vs Automation Anywhere?
RPA that Bots can run without centralized control?
When evaluating Robotic Process Automation, what aspect do you think is the most important to look for?
What is the best RPA certification?
How should I calculate ROI for RPA? How should I measure RPA success?


text:
New conservancy director aims for more community engagement
Nathan Daniel wants to conduct more community science projects with universities and the state
by Tyler Shuey
The newly named executive director of the Great Peninsula Conservancy is looking to continue the trajectory that the organization has been on for years under the recently retired Sandra Staples-Bortner.
The organization is a nonprofit land trust charged with protecting natural habitats and open spaces in the Great Peninsula region of West Puget Sound.
Nathan Daniel has a diverse background, from working in the Peace Corps in Timor and Russia to working in his basement for a whole year and building the nonprofit Truckee Meadows Park Foundation from the ground up in Reno, Nevada.
In that role, Daniel worked to protect and advocate for public lands in the eastern Sierra Nevada Mountains.
"That's where I really started seeing the value of conservation and the opportunities that existed," Daniel said of his time abroad.
"It gave me this different appreciation of being in the forest than I had before. I was always playing outside and I kind of took it for granted."
Growing up in Northwest Ohio, Daniel was used to being outside and tried to immerse himself in nature. He refers to his home soil as the "Great Black Swamp," a term coined in the 19th century to describe the area. Daniel holds a master's degree in environmental science from Ohio University.
Daniel found himself in Washington state after his wife took a job in the Seattle area. Daniel said they had thought about moving here for a while, "just like everybody else."
"We found jobs that fit our skill set," Daniel said. "This is the place to be, it's so beautiful. We love this place."
Specifically, Daniel noted the biodiversity that Western Washington provides.
"You can walk through a trail and literally identify 40 to 80 species of plants," he said. "That's so much fun."
With just over two weeks under his belt in his new role as GPC's executive director, Daniel said work has gone smoothly so far. He anticipates that will continue.
"The staff here is excellent," he said. "They're high-quality people that know what they're doing. I've been meeting with all the board of directors and they are at a caliber that I honestly haven't seen in a board before.
"On a day-to-day operational level, I can't see any problems we are going to have in this transition. I think we're poised to continue doing all the things that GPC's been doing and take it to the next level."
That "next level" involves more civic engagement and more community science projects with universities and state agency workers, Daniel said.
"I want to see more opportunities for people to get out on the properties that we own and get them involved. There is an endless amount of restoration work that can happen."
Daniel said he has received some technical advice from Staples-Bortner regarding current projects and where the funding is going to come from.
"I have some big shoes to fill," he said. "She built a great organization.
Tyler Shuey is a reporter for Kitsap News Group. He can be reached at tshuey@soundpublishing.com
No-contact advisory issued for Kitsap Lake due to potentially toxic cyanobacteria
KPHD to host West Sound Care event June 22 in Bremerton