text:
#tbt book review: Elisa Albert's 'How This Night is Different'
Posted at 7:45 am by Michael Janairo, on January 8, 2015
In anticipation of Elisa Albert's new novel "After Birth" (slated to be published next month), here's a review of her first collection of short stories. The review was published April 1, 2007.
In the title story of Elisa Albert's comic and irreverent debut collection, "How This Night is Different" (Free Press; 208 pages; $18), a young woman brings her boyfriend home to meet the family during Passover and to introduce him to his first seder.
She describes him to her mother as "Kind of like a Jew for Jesus, but minus the Jew part." And to him, she summarizes the meal as "You get constipated, you get sick on bad wine, you talk biblical mythology until everyone nods off in their bone-dry matzo cake."
The holiday doesn't hold much meaning for her. Her parents treat her like a little kid. Worse yet, and this is a brilliant touch, during the holiday in which leavened bread is forbidden so Jews can remember the hardships of the Exodus, she is suffering from a yeast infection, "with yeast multiplying exponentially in her crotch, maybe enough by now to bake a loaf or two of forbidden bread."
Feeling unkosher and uncertain about her boyfriend, she responds to his, "I want to show you that I'm amenable to Judaism," by retorting: "I believe that's the official motto of post-World War II Europe, honey."
With that quip, Albert shows a biting knowingness about contemporary Jewish life that reflects the very real American unease with an ongoing cultural conflict between assimilation and tradition. Albert's point isn't to offer solutions, but to open up readers' eyes to the peculiarities and absurdities of contemporary Judaism through lively characters and generous descriptions.
For example, a young woman in "So Long" watches her best friend become more religiously Jewish as her wedding approaches, and expresses her bewilderment at the change with snarky asides, as in: "Her intended's name is Dov. He's ba'al tshuva like her. It means 'returned.' (Don't kid yourself: born again). There's, like, a whole world of these people."
In "The Mother is Always Upset," a young father is about to watch his son's ritual circumcision, or bris, but is accosted by his wife's feminist friend who calls the ceremony "some barbaric, public act where we're all supposed to stand around and cheer or whatever." And though he wants to dismiss her harangue, it forces him to think about his own circumcised penis and his sexual history, and that maybe he wasn't such a good guy. He comes to the conclusion that he "used its powers for evil rather than good."
Other stories find complex humor and pathos in situations with intimate ties to Judaism: a youth group's trip to Auschwitz in "The Living"; a woman at a bar mitzvah realizing her youth had passed her by in "Everything But"; and a sister dealing with her younger sister's anorexia during Yom Kippur, a day of atonement that includes fasting, in "We Have Trespassed."
The story that closes the collection, "Etta or Bessie or Dora or Rose," is a postmodern turn that shows off Albert's smarts with a love letter from one "Elisa Albert" to another writer who has examined similarly complex territory of Jews in America, Philip Roth.
In the letter, Albert (or "Albert") not only offers an exegesis on Roth's life and work that includes an invitation to have his first (and perhaps only) baby, but also probes her uncertainty and complexity of her role as a young writer in America, her very identity.
"The potential was endless and unbelievably exciting," she (or "she") writes of an idea she has for a novel about the female Jewish immigrants who died in the Triangle Shirtwaist Fire. "I was out for some Safran Foer blood, man. I would get a grant, I would go to an artists' colony, I would sell first serial to the Paris Review, I would have a stunning black-and-white portrait taken by Marion Ettlinger, I would sell the collection in a massive two-book deal which would warrant a clipping in Shtetl Fabulous magazine, that glossy, much-hyped bimonthly effort to turn cultural Jewish identity into the coolest shtick on the block, the new black. I could not have been more excited, more — if you'll excuse the expression in this context — fired up."
Reading that paragraph, I flipped to the book jacket: Albert's author photo was indeed taken by Marion Ettlinger. Obviously, Albert isn't the only one fired up by her writing.
So watch out, Philip Roth. You, too, Jonathan Safran Foer. Make way for Elisa Albert.
← Book review: The Fear Index by Robert Harris
Book review: Yasushi Inoue's 'Life of a Counterfeiter and Other Stories' →
Posted in Reviews	| 0 Comments | Tagged book review, elisa albert, how this night is different, literature	|


text:
Canada's unemployment rate falls to 6.6%, the lowest level in more than 2 years
By Terry PedwellThe Canadian Press
Fri., March 10, 2017timer3 min. read
OTTAWA—Canada's unemployment rate dropped to 6.6 per cent last month, its lowest level in more than two years, as fewer people were looking for work, Statistics Canada said Friday.
Several economists were quick to hail the numbers as a sign that Canada's economy is on the mend, though at least one questioned the survey's findings of a massive swing toward full-time employment at the expense of part-time jobs.
The decline of 0.2 percentage points from the previous month brought the rate down to a number not seen since January 2015.
The agency's February employment survey indicated the national labour market added 15,300 jobs overall last month, higher than analyst expectations.
Economists had projected a gain of 2,500 jobs and the unemployment rate to stay at 6.8 per cent, according to Thomson Reuters.
Canadian economy to grow by 2.4% in 2017 to match U.S., OECD predicts
Canada records trade surplus for two consecutive months
"This continues the string of improving Canadian economic data and suggests that the underlying economy continues to gain steam," said BMO senior economist Benjamin Reitzes in a note to clients. "One more piece of evidence that the Canadian economy has turned the corner."
The Statistics Canada report found most of the February job gains came from full-time work, offset by a decline in the number of people working part-time.
It said an estimated 105,000 people found full-time employment last month while part-time positions dropped by nearly 90,000. That was in contrast to the January labour market survey, which showed a surge in part-time work.
"I find this hard to believe in terms of the details," said Derek Holt, head of markets economics at Scotiabank Economics, who noted that the increase in full-time jobs would mark the strongest gain in almost 11 years while the part-time drop would represent the biggest decline since Statistics Canada began its labour force survey in 1976.
While the monthly employment numbers are typically volatile, Statistics Canada said that, in the 12 months to February, Canada saw a net gain of 288,000 jobs with most of the increase coming in the last six months of 2016.
Friday's jobs report has taken the likelihood of a Bank of Canada interest rate cut completely off the table, said Reitzes.
But the central bank is also unlikely to raise rates anytime soon, said TD Economics senior economist Brian DePratto.
"The Canadian economy is seeing a return to sustained healthy growth, which should absorb remaining slack and lead to eventual inflationary pressures," DePratto said.
"This process will take time, however, and the Bank of Canada will want to continue supporting it and will likely be reluctant to raise rates until well into next year."
The central bank, in holding the line on its 0.5 per cent trend-setting interest rate target earlier this month, cited "significant uncertainties" in Canada's economy as it weighed whether to move that rate up or down.
Job numbers south of the border also came in stronger in February. The U.S. Bureau of Labor Statistics reported Friday that nonfarm payrolls increased by 235,000 from January while the U.S. national unemployment rate was 4.7 per cent, a decline of 0.1 per cent.
Much of the increased job activity was seen in the West with British Columbia, Saskatchewan and Manitoba all seeing gains. In contrast, fewer people were working in Nova Scotia and Newfoundland and Labrador while employment was little changed in the other five provinces.
Economic Development Minister Brad Duguid said he was encouraged by Ontario's job numbers.
Duguid said the province experienced its seventh straight month of employment growth — the best such streak in 14 years.
"When we talk about positive trends, that's a positive trend," the minister told reporters Friday.
Duguid said Ontario's 6.2 per cent unemployment rate is its best since October 2007.
Women in the 25-to-54 age bracket saw more work, marking the third monthly increase in that category. Men in the same age range saw employment holding steady in February after a notable increase the previous month.
Employment among youth aged 15 to 24 was little changed both in February and on a year-over-year basis. But with fewer young people seeking jobs, their unemployment rated declined by 0.9 percentage points to 12.4 per cent.
The data release came as Statistics Canada encountered problems releasing the data on its website. As of 10 a.m. ET, 90 minutes after the figures were released, its website was down. Agency officials were unable to say why the site had been down for most of the night but said they hoped the technical issued could be resolved quickly.
With files from The Star's Robert Benzie

redpajama_set_name: RedPajamaCommonCrawl


I know that not just about every few will get a happily ever right after. The Montgomery county Domestic Relations is horrific. All right so not all marriages make it, but that does not suggest that you have to sign up for the stats. Can you choose if it is time to take into account divorce?The uncomplicated truth is that there are many disadvantages to hoping to take care of your Florida armed service divorce on your own. So, in this article are a couple of reasons you really should contemplate selecting a licensed attorney to deal with your case.Most of them filling reality is generally due to any misunderstanding involving them or quite a few dowry circumstance, or unlawful actions from the wife or husband. In this circumstance, they arouse the 2nd difficulties of overall performance baby custody. When the little 1 requirements to be with father or with mother, every query needs to be sorted although you go divorce. You can uncover instances where each the couples concur and research for circumstances. On top of this, in addition infant custody, share for sharing this sort of associate, each element will come in entrance. It is most well-liked to go through all the riddles within a divorce scenario and reveal a solution. Thinking about all the scenarios, a divorce circumstance comes right into the division of both contested or uncontested divorces.There are scenarios in which what has occurred in a relationship, the pain and grief that it has brought on is just as well much to bear. It could also be the scenario that you have just grow to be worn out hoping to make your relationship get the job done. No make any difference what I or anyone else can say, there are some wounds that will never ever mend.Idleness as they say is a disease on its very own. When you are idle with out a work or any type of engagement or active pursuits, all the girlfriends will surely keep knocking at your door or buzzing your BB phone for gist and gossip about how is acquiring married weekend immediately after weekend.When saving a connection, it's critical to have a strategy of action like this. Subsequent your feelings and thoughts will just guide to disaster. That's what most people do (ever wonder why the Montgomery county Domestic Relations is so large?). As a substitute, men and women really should have some form of instruction handbook guiding them via the troubles of relationships.Too quite a few men and women these times fall short to see the worth of marriage and preserving it with each other. With a lot more and much more persons divorcing and separating, it is starting to be to be an all as well widespread option to a crumbling relationship. Fewer and fewer people request anyone to, "Save my marriage currently." What people fail to remember at times is that it doesn't have to crumble. They indicator divorce papers and stay separate lives. They forget that a several petty arguments are usual in any romantic relationship and even with them you can dwell harmoniously and fortunately.Use a solitary sheet of paper for just about every person/ancestor in your family. Then make small household groups of ancestors. You will compose details you come across for just about every human being in the single piece of paper that belongs to that person. And you will produce a summary of the data from all individuals who belong to a loved ones group to the sheet of paper that belongs to a specified relatives group. For instance for your household team (e.g. you, your spouse and your three kids), use six sheets of paper just one for just about every member of the relatives and 1 for the relatives team (5 users and 1 household team).This challenge is crystal clear; Bishop Thomas Months III did realizing and purposely try to destroy his spouse simply because he did not get his way. When she filed the divorce papers he claimed he was going to contest them. He has because modified his head, but the simple fact that he experienced the audacity to say it demonstrates the variety of person that he is.There must be no slight or dependent little ones with each other and the wife should not be pregnant. If you have slight little ones together, a common divorce must be filed. Be sure to see my report on filing a normal divorce for far more particulars.One very good concern is to ask is how substantially encounter they have in the field of divorce. Also, do they have encounter heading to court? When a divorce scenario gets to court docket it can get a very little messy. You will want to know how typically they have performed this and what their information for profitable and dropping a case is. This is especially necessary to know if you have a intricate divorce involving little ones, properties and a ton of possessions to be divided.How numerous married women in Nigeria do you assume will decide on to remarry their spouse if they are supplied the choice to go back to their early twenties and make the very same alternative they produced prior to?Tip #2 - Consider To Prevent Speaking about Petty Factors When Chatting With The Attorney. Yet again, just like we stated over, attorney time is funds. Each time you are discussing the status of your scenario with the attorney, no matter whether the dialogue is face-to-deal with, about the telephone, or through e mail, try to avoid wasting the attorney's time by only talking about issues which are suitable to transferring your divorce ahead.


Another common gambit that is a bit less evil is to use a standard, inexpensive ingredient that has shown some efficacy in treating psoriasis symptoms – say, coal tar or a mild topical steroid – and combine it with natural-sounding or scientific-sounding other ingredients they can create a story around. They can then charge two, three or even four times more than the effective ingredient is actually worth, because you have been told that the Emu spit mixed with organic hemp is really the miracle, rather than the few pennies of coal tar added to the $20 jar of product.
A third common scam is to write books that discuss alleged cures for psoriasis. This is a pretty smart strategy because the authors can claim first amendment free speech protections. These are often marketed with phony endorsements and five-star reviews they write for themselves on book-buying websites.
Look: it's your money, and if you want to waste it, that is your right.
But the truth is: psoriasis is a complex disease of the immune system, and some of the smartest medical experts in the world are working on figuring it out. It has not been figured out yet.
If something sounds too good to be true, it is almost never true.
Find yourself a dermatologist you trust and discuss fly-by-night treatments with this doctor before wasting your money. Or drop us a line and we'll give you our assessment.
But why reward bad people who are trying to steal your money and delay you from seeking out real treatments?


text:
Frances E Maxfield-Hastie
Frances Elizabeth Maxfield-Hastie, born February 1, 1963, wife of Derrick Linrell Hastie, daughter of the late Harold and Dorothy Hodge Maxfield and the late Sammie Lee Walters. At an early age, she accepted Christ as her personal Savior and joined Union Station AME Church, where she served with the YPD ministry and Stewardess Board #3. Frances was a graduate of Sumter High School, Class of 1981. She also attended South Carolina State University, Orangeburg. Frances hobbies included playing bingo and crocheting cherished items for family. In the late evening of December 10, 2021, God saw the road was getting rough, and the hills were hard to climb, so he summoned Frances Elizabeth Maxfield-Hastie to enter the fuller life, while in the Medical University of South Carolina, Charleston. Precious memories will be cherished by the love of her life for 41 years and on September 26, 1991 as her husband of 31 years, Derrick Linrell Hastie of Sumter; three children, Kimberly Latrice Hastie, Derrick Fionne (Tiffany) Hastie and Jamaal Linrell Hastie, all of Sumter; thirteen grandchildren; her father- in- law, Calvin Hastie of Sumter; six sisters, Gloria (Julian) Davis of Sumter, Betty Turner of Fayetteville, NC, Cassie Bones, Tonya (Dennis) Issac, Elonda (Sheldon) Singleton; Tori Walters, all of Sumter; three brothers, Harold K. (Thea) Maxfield of York, PA, Eugene J. (Tammi) Maxfield and Tyrone Walters, both of Sumter; one devoted sister-in- law, "Boo Thing" Cassandra Lowery-Thompson and one brother-in-law, Larry (Tameria) Holman, both of Sumter; four aunts, Barbara Chalk and Rebecca Maxfield, both of York, PA, Rosa Lowery-Jones and Reverend Mary Lowery-Harvin of Sumter; two uncles, Leroy Hodge (godfather) and Councilman Thomas "Bubba" (Sarratta) Lowery, both of Sumter; five god children; a special best friend forever "BFF" and caregiver, Glenda "Hunny Bunny" Rhodes; special love for her "Bonus Family", the Scarborough Family Members, and a host of loving and devoted nieces, nephews, cousins and dear friends that are deeply grieved by her passing. In accord with the COVID 19 guidelines, the family is requesting face masks and social distancing be observed by relatives and friends during visitation at the home, 227 Brent Street, Sumter. Funeral services will be held 1:00 p. m., Saturday, December 18, 2021, at Union Station A. M. E. Church, 945 South Main Street, Sumter, with the Rev. Laverne Washington, Pastor, the Rev. James Brunson, Eulogist. The procession will leave from the home at 12:30 p. m. Burial will follow in the St. Mark A. M. E. Church Cemetery, 6097 Alderman Camp Road, Alcolu.


– Jane's thesis, written in 2002, and submitted for an M.A. in Counseling/Depth Psychology.
The Yoga Loft was founded in 2002 by Jane House and Meg Whitbread with an intention to create a home for 'The Yoga of Embodiment' in the heart of San Francisco. Over the years, The Yoga Loft has grown into one of California's most beloved yoga schools. "The Loft" has become a home-base for the city's most authentic teachers. It is a place where evolutionary relationships are formed and every time you walk up the stairs, you are bound hear stunning amounts of laughter.
The other night I woke straight-up from a dream. A wave of relief flooded my body. Relief of the funny kind. The kind that comes when you finally get enough perspective on something to truly laugh at yourself. You laugh because…finally, you're free.
In the dream, I am desperately trying to get to my teacher Sofia's yoga class. But when I finally scramble my way out of my bathrobe and up the stairs to the shala, the door is firmly blocked. Blocked with all kinds of baby paraphernalia– stroller, boxes of diapers, stuffed animals, a pile. I try to move the items to the side, but nothing wants to budge. After so much work that I am sweating, I finally get my hand on the door. And in that very moment, I hear my baby crying. I must let go.
Awake, I finally understood why Sofia had forbid me to do backbends during the latter part of my pregnancy and the 'fourth trimester' of nursing. 'The front surface of your body needs to be completely available for the baby,' she said. 'It needs to be soft, open, willing.' These words made sense to the intuitive regions of my brain-body, even if they weren't what I wanted to hear. Because, still, part of me wanted to be that kind of yogi who is pregnant and backbending. If I am honest, there is always that part of me.
Sometimes it takes a good while to understand profound things. Like great teachings, for example. They take time, years even, to sink through the body's waters. The head does not help make sense of them; wisdom is a hard-won thing. My eventual A-haaaa: It's not about getting what I want. It's about giving what I have. And by way of tons of practice over years, I am thankful for the something that I have to give. Yoga, after all, is not about backbends. It about the invisible things.
So for now, I accept the blocked doors to the shala of my dreams. And, even better, I laugh at my great and desperate attempt to get in there! With great relief and celebration, I conclude this period of the 'fourth trimester' with the following offerings…all of which point toward invisibles.


text:
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
 * Tracking changes on databases, tables and views
 *
 * @package PhpMyAdmin
 */
if (! defined('PHPMYADMIN')) {
    exit;
}

/**
 * This class tracks changes on databases, tables and views.
 *
 * @package PhpMyAdmin
 *
 * @todo use stristr instead of strstr
 */
class PMA_Tracker
{
    /**
     * Whether tracking is ready.
     */
    static protected $enabled = false;

    /**
     * Flags copied from `tracking` column definition in `pma_tracking` table.
     * Used for column type conversion in Drizzle.
     *
     * @var array
     */
    static private $_tracking_set_flags = array(
        'UPDATE','REPLACE','INSERT','DELETE','TRUNCATE','CREATE DATABASE',
        'ALTER DATABASE','DROP DATABASE','CREATE TABLE','ALTER TABLE',
        'RENAME TABLE','DROP TABLE','CREATE INDEX','DROP INDEX',
        'CREATE VIEW','ALTER VIEW','DROP VIEW'
    );

    /**
     * Actually enables tracking. This needs to be done after all
     * underlaying code is initialized.
     *
     * @static
     *
     * @return void
     */
    static public function enable()
    {
        self::$enabled = true;
    }

    /**
     * Gets the on/off value of the Tracker module, starts initialization.
     *
     * @static
     *
     * @return boolean (true=on|false=off)
     */
    static public function isActive()
    {
        if (! self::$enabled) {
            return false;
        }
        /* We need to avoid attempt to track any queries
         * from PMA_getRelationsParam
         */
        self::$enabled = false;
        $cfgRelation = PMA_getRelationsParam();
        /* Restore original state */
        self::$enabled = true;
        if (! $cfgRelation['trackingwork']) {
            return false;
        }

        $pma_table = self::_getTrackingTable();
        if (isset($pma_table)) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * Parses the name of a table from a SQL statement substring.
     *
     * @param string $string part of SQL statement
     *
     * @static
     *
     * @return string the name of table
     */
    static protected function getTableName($string)
    {
        if (/*overload*/mb_strstr($string, '.')) {
            $temp = explode('.', $string);
            $tablename = $temp[1];
        } else {
            $tablename = $string;
        }

        $str = explode("\n", $tablename);
        $tablename = $str[0];

        $tablename = str_replace(';', '', $tablename);
        $tablename = str_replace('`', '', $tablename);
        $tablename = trim($tablename);

        return $tablename;
    }

    /**
     * Gets the tracking status of a table, is it active or deactive ?
     *
     * @param string $dbname    name of database
     * @param string $tablename name of table
     *
     * @static
     *
     * @return boolean true or false
     */
    static public function isTracked($dbname, $tablename)
    {
        if (! self::$enabled) {
            return false;
        }
        /* We need to avoid attempt to track any queries
         * from PMA_getRelationsParam
         */
        self::$enabled = false;
        $cfgRelation = PMA_getRelationsParam();
        /* Restore original state */
        self::$enabled = true;
        if (! $cfgRelation['trackingwork']) {
            return false;
        }

        $sql_query = " SELECT tracking_active FROM " . self::_getTrackingTable() .
        " WHERE db_name = '" . PMA_Util::sqlAddSlashes($dbname) . "' " .
        " AND table_name = '" . PMA_Util::sqlAddSlashes($tablename) . "' " .
        " ORDER BY version DESC";

        $row = $GLOBALS['dbi']->fetchArray(PMA_queryAsControlUser($sql_query));

        if (isset($row['tracking_active']) && $row['tracking_active'] == 1) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * Returns the comment line for the log.
     *
     * @return string Comment, contains date and username
     */
    static public function getLogComment()
    {
        $date = date('Y-m-d H:i:s');

        return "# log " . $date . " " . $GLOBALS['cfg']['Server']['user'] . "\n";
    }

    /**
     * Creates tracking version of a table / view
     * (in other words: create a job to track future changes on the table).
     *
     * @param string $dbname       name of database
     * @param string $tablename    name of table
     * @param string $version      version
     * @param string $tracking_set set of tracking statements
     * @param bool   $is_view      if table is a view
     *
     * @static
     *
     * @return int result of version insertion
     */
    static public function createVersion($dbname, $tablename, $version,
        $tracking_set = '', $is_view = false
    ) {
        global $sql_backquotes, $export_type;

        if ($tracking_set == '') {
            $tracking_set
                = $GLOBALS['cfg']['Server']['tracking_default_statements'];
        }

        // get Export SQL instance
        include_once "libraries/plugin_interface.lib.php";
        /* @var $export_sql_plugin ExportSql */
        $export_sql_plugin = PMA_getPlugin(
            "export",
            "sql",
            'libraries/plugins/export/',
            array(
                'export_type' => $export_type,
                'single_table' => false,
            )
        );

        $sql_backquotes = true;

        $date = date('Y-m-d H:i:s');

        // Get data definition snapshot of table

        $columns = $GLOBALS['dbi']->getColumns($dbname, $tablename, null, true);
        // int indices to reduce size
        $columns = array_values($columns);
        // remove Privileges to reduce size
        for ($i = 0, $nb = count($columns); $i < $nb; $i++) {
            unset($columns[$i]['Privileges']);
        }

        $indexes = $GLOBALS['dbi']->getTableIndexes($dbname, $tablename);

        $snapshot = array('COLUMNS' => $columns, 'INDEXES' => $indexes);
        $snapshot = serialize($snapshot);

        // Get DROP TABLE / DROP VIEW and CREATE TABLE SQL statements
        $sql_backquotes = true;

        $create_sql  = "";

        if ($GLOBALS['cfg']['Server']['tracking_add_drop_table'] == true
            && $is_view == false
        ) {
            $create_sql .= self::getLogComment()
                . 'DROP TABLE IF EXISTS ' . PMA_Util::backquote($tablename) . ";\n";

        }

        if ($GLOBALS['cfg']['Server']['tracking_add_drop_view'] == true
            && $is_view == true
        ) {
            $create_sql .= self::getLogComment()
                . 'DROP VIEW IF EXISTS ' . PMA_Util::backquote($tablename) . ";\n";
        }

        $create_sql .= self::getLogComment() .
            $export_sql_plugin->getTableDef($dbname, $tablename, "\n", "");

        // Save version

        $sql_query = "/*NOTRACK*/\n" .
        "INSERT INTO " . self::_getTrackingTable() . " (" .
        "db_name, " .
        "table_name, " .
        "version, " .
        "date_created, " .
        "date_updated, " .
        "schema_snapshot, " .
        "schema_sql, " .
        "data_sql, " .
        "tracking " .
        ") " .
        "values (
        '" . PMA_Util::sqlAddSlashes($dbname) . "',
        '" . PMA_Util::sqlAddSlashes($tablename) . "',
        '" . PMA_Util::sqlAddSlashes($version) . "',
        '" . PMA_Util::sqlAddSlashes($date) . "',
        '" . PMA_Util::sqlAddSlashes($date) . "',
        '" . PMA_Util::sqlAddSlashes($snapshot) . "',
        '" . PMA_Util::sqlAddSlashes($create_sql) . "',
        '" . PMA_Util::sqlAddSlashes("\n") . "',
        '" . PMA_Util::sqlAddSlashes(self::_transformTrackingSet($tracking_set))
        . "' )";

        $result = PMA_queryAsControlUser($sql_query);

        if ($result) {
            // Deactivate previous version
            self::deactivateTracking($dbname, $tablename, ($version - 1));
        }

        return $result;
    }

    /**
     * Removes all tracking data for a table or a version of a table
     *
     * @param string $dbname    name of database
     * @param string $tablename name of table
     * @param string $version   version
     *
     * @static
     *
     * @return int result of version insertion
     */
    static public function deleteTracking($dbname, $tablename, $version = '')
    {
        $sql_query = "/*NOTRACK*/\n"
            . "DELETE FROM " . self::_getTrackingTable()
            . " WHERE `db_name` = '"
            . PMA_Util::sqlAddSlashes($dbname) . "'"
            . " AND `table_name` = '"
            . PMA_Util::sqlAddSlashes($tablename) . "'";
        if ($version) {
            $sql_query .= " AND `version` = '"
                . PMA_Util::sqlAddSlashes($version) . "'";
        }
        $result = PMA_queryAsControlUser($sql_query);

        return $result;
    }

    /**
     * Creates tracking version of a database
     * (in other words: create a job to track future changes on the database).
     *
     * @param string $dbname       name of database
     * @param string $version      version
     * @param string $query        query
     * @param string $tracking_set set of tracking statements
     *
     * @static
     *
     * @return int result of version insertion
     */
    static public function createDatabaseVersion($dbname, $version, $query,
        $tracking_set = 'CREATE DATABASE,ALTER DATABASE,DROP DATABASE'
    ) {
        $date = date('Y-m-d H:i:s');

        if ($tracking_set == '') {
            $tracking_set
                = $GLOBALS['cfg']['Server']['tracking_default_statements'];
        }

        $create_sql  = "";

        if ($GLOBALS['cfg']['Server']['tracking_add_drop_database'] == true) {
            $create_sql .= self::getLogComment()
                . 'DROP DATABASE IF EXISTS ' . PMA_Util::backquote($dbname) . ";\n";
        }

        $create_sql .= self::getLogComment() . $query;

        // Save version
        $sql_query = "/*NOTRACK*/\n" .
        "INSERT INTO " . self::_getTrackingTable() . " (" .
        "db_name, " .
        "table_name, " .
        "version, " .
        "date_created, " .
        "date_updated, " .
        "schema_snapshot, " .
        "schema_sql, " .
        "data_sql, " .
        "tracking " .
        ") " .
        "values (
        '" . PMA_Util::sqlAddSlashes($dbname) . "',
        '" . PMA_Util::sqlAddSlashes('') . "',
        '" . PMA_Util::sqlAddSlashes($version) . "',
        '" . PMA_Util::sqlAddSlashes($date) . "',
        '" . PMA_Util::sqlAddSlashes($date) . "',
        '" . PMA_Util::sqlAddSlashes('') . "',
        '" . PMA_Util::sqlAddSlashes($create_sql) . "',
        '" . PMA_Util::sqlAddSlashes("\n") . "',
        '" . PMA_Util::sqlAddSlashes(self::_transformTrackingSet($tracking_set))
        . "' )";

        $result = PMA_queryAsControlUser($sql_query);

        return $result;
    }

    /**
     * Changes tracking of a table.
     *
     * @param string  $dbname    name of database
     * @param string  $tablename name of table
     * @param string  $version   version
     * @param integer $new_state the new state of tracking
     *
     * @static
     *
     * @return int result of SQL query
     */
    static private function _changeTracking($dbname, $tablename,
        $version, $new_state
    ) {

        $sql_query = " UPDATE " . self::_getTrackingTable() .
        " SET `tracking_active` = '" . $new_state . "' " .
        " WHERE `db_name` = '" . PMA_Util::sqlAddSlashes($dbname) . "' " .
        " AND `table_name` = '" . PMA_Util::sqlAddSlashes($tablename) . "' " .
        " AND `version` = '" . PMA_Util::sqlAddSlashes($version) . "' ";

        $result = PMA_queryAsControlUser($sql_query);

        return $result;
    }

    /**
     * Changes tracking data of a table.
     *
     * @param string       $dbname    name of database
     * @param string       $tablename name of table
     * @param string       $version   version
     * @param string       $type      type of data(DDL || DML)
     * @param string|array $new_data  the new tracking data
     *
     * @static
     *
     * @return bool result of change
     */
    static public function changeTrackingData($dbname, $tablename,
        $version, $type, $new_data
    ) {
        if ($type == 'DDL') {
            $save_to = 'schema_sql';
        } elseif ($type == 'DML') {
            $save_to = 'data_sql';
        } else {
            return false;
        }
        $date  = date('Y-m-d H:i:s');

        $new_data_processed = '';
        if (is_array($new_data)) {
            foreach ($new_data as $data) {
                $new_data_processed .= '# log ' . $date . ' ' . $data['username']
                    . PMA_Util::sqlAddSlashes($data['statement']) . "\n";
            }
        } else {
            $new_data_processed = $new_data;
        }

        $sql_query = " UPDATE " . self::_getTrackingTable() .
        " SET `" . $save_to . "` = '" . $new_data_processed . "' " .
        " WHERE `db_name` = '" . PMA_Util::sqlAddSlashes($dbname) . "' " .
        " AND `table_name` = '" . PMA_Util::sqlAddSlashes($tablename) . "' " .
        " AND `version` = '" . PMA_Util::sqlAddSlashes($version) . "' ";

        $result = PMA_queryAsControlUser($sql_query);

        return (boolean) $result;
    }

    /**
     * Activates tracking of a table.
     *
     * @param string $dbname    name of database
     * @param string $tablename name of table
     * @param string $version   version
     *
     * @static
     *
     * @return int result of SQL query
     */
    static public function activateTracking($dbname, $tablename, $version)
    {
        return self::_changeTracking($dbname, $tablename, $version, 1);
    }

    /**
     * Deactivates tracking of a table.
     *
     * @param string $dbname    name of database
     * @param string $tablename name of table
     * @param string $version   version
     *
     * @static
     *
     * @return int result of SQL query
     */
    static public function deactivateTracking($dbname, $tablename, $version)
    {
        return self::_changeTracking($dbname, $tablename, $version, 0);
    }

    /**
     * Gets the newest version of a tracking job
     * (in other words: gets the HEAD version).
     *
     * @param string $dbname    name of database
     * @param string $tablename name of table
     * @param string $statement tracked statement
     *
     * @static
     *
     * @return int (-1 if no version exists | >  0 if a version exists)
     */
    static public function getVersion($dbname, $tablename, $statement = null)
    {
        $sql_query = " SELECT MAX(version) FROM " . self::_getTrackingTable() .
        " WHERE `db_name` = '" . PMA_Util::sqlAddSlashes($dbname) . "' " .
        " AND `table_name` = '" . PMA_Util::sqlAddSlashes($tablename) . "' ";

        if ($statement != "") {
            if (PMA_DRIZZLE) {
                $sql_query .= ' AND tracking & '
                    . self::_transformTrackingSet($statement) . ' <> 0';
            } else {
                $sql_query .= " AND FIND_IN_SET('"
                    . $statement . "',tracking) > 0" ;
            }
        }
        $row = $GLOBALS['dbi']->fetchArray(PMA_queryAsControlUser($sql_query));
        return isset($row[0])
            ? $row[0]
            : -1;
    }

    /**
     * Gets the record of a tracking job.
     *
     * @param string $dbname    name of database
     * @param string $tablename name of table
     * @param string $version   version number
     *
     * @static
     *
     * @return mixed record DDM log, DDL log, structure snapshot, tracked
     *         statements.
     */
    static public function getTrackedData($dbname, $tablename, $version)
    {
        $sql_query = " SELECT * FROM " . self::_getTrackingTable() .
            " WHERE `db_name` = '" . PMA_Util::sqlAddSlashes($dbname) . "' ";
        if (! empty($tablename)) {
            $sql_query .= " AND `table_name` = '"
                . PMA_Util::sqlAddSlashes($tablename) . "' ";
        }
        $sql_query .= " AND `version` = '" . PMA_Util::sqlAddSlashes($version)
            . "' " . " ORDER BY `version` DESC LIMIT 1";

        $mixed = $GLOBALS['dbi']->fetchAssoc(PMA_queryAsControlUser($sql_query));

        // Parse log
        $log_schema_entries = explode('# log ',  $mixed['schema_sql']);
        $log_data_entries   = explode('# log ',  $mixed['data_sql']);

        $ddl_date_from = $date = date('Y-m-d H:i:s');

        $ddlog = array();
        $first_iteration = true;

        // Iterate tracked data definition statements
        // For each log entry we want to get date, username and statement
        foreach ($log_schema_entries as $log_entry) {
            if (trim($log_entry) != '') {
                $date      = /*overload*/mb_substr($log_entry, 0, 19);
                $username  = /*overload*/mb_substr(
                    $log_entry, 20, /*overload*/mb_strpos($log_entry, "\n") - 20
                );
                if ($first_iteration) {
                    $ddl_date_from = $date;
                    $first_iteration = false;
                }
                $statement = rtrim(/*overload*/mb_strstr($log_entry, "\n"));

                $ddlog[] = array( 'date' => $date,
                                  'username'=> $username,
                                  'statement' => $statement );
            }
        }

        $date_from = $ddl_date_from;
        $ddl_date_to = $date;

        $dml_date_from = $date_from;

        $dmlog = array();
        $first_iteration = true;

        // Iterate tracked data manipulation statements
        // For each log entry we want to get date, username and statement
        foreach ($log_data_entries as $log_entry) {
            if (trim($log_entry) != '') {
                $date      = /*overload*/mb_substr($log_entry, 0, 19);
                $username  = /*overload*/mb_substr(
                    $log_entry, 20, /*overload*/mb_strpos($log_entry, "\n") - 20
                );
                if ($first_iteration) {
                    $dml_date_from = $date;
                    $first_iteration = false;
                }
                $statement = rtrim(/*overload*/mb_strstr($log_entry, "\n"));

                $dmlog[] = array( 'date' => $date,
                                  'username' => $username,
                                  'statement' => $statement );
            }
        }

        $dml_date_to = $date;

        // Define begin and end of date range for both logs
        $data = array();
        if (strtotime($ddl_date_from) <= strtotime($dml_date_from)) {
            $data['date_from'] = $ddl_date_from;
        } else {
            $data['date_from'] = $dml_date_from;
        }
        if (strtotime($ddl_date_to) >= strtotime($dml_date_to)) {
            $data['date_to'] = $ddl_date_to;
        } else {
            $data['date_to'] = $dml_date_to;
        }
        $data['ddlog']           = $ddlog;
        $data['dmlog']           = $dmlog;
        $data['tracking']        = self::_transformTrackingSet($mixed['tracking']);
        $data['schema_snapshot'] = $mixed['schema_snapshot'];

        return $data;
    }

    /**
     * Parses a query. Gets
     *  - statement identifier (UPDATE, ALTER TABLE, ...)
     *  - type of statement, is it part of DDL or DML ?
     *  - tablename
     *
     * @param string $query query
     *
     * @static
     * @todo: using PMA SQL Parser when possible
     * @todo: support multi-table/view drops
     *
     * @return mixed Array containing identifier, type and tablename.
     *
     */
    static public function parseQuery($query)
    {
        // Usage of PMA_SQP does not work here
        //
        // require_once("libraries/sqlparser.lib.php");
        // $parsed_sql = PMA_SQP_parse($query);
        // $sql_info = PMA_SQP_analyze($parsed_sql);

        $query = str_replace("\n", " ", $query);
        $query = str_replace("\r", " ", $query);

        $query = trim($query);
        $query = trim($query, ' -');

        $tokens = explode(" ", $query);
        foreach ($tokens as $key => $value) {
            $tokens[$key] = /*overload*/mb_strtoupper($value);
        }

        // Parse USE statement, need it for SQL dump imports
        if (/*overload*/mb_substr($query, 0, 4) == 'USE ') {
            $prefix = explode('USE ', $query);
            $GLOBALS['db'] = self::getTableName($prefix[1]);
        }

        /*
         * DDL statements
         */

        $result         = array();
        $result['type'] = 'DDL';

        // Parse CREATE VIEW statement
        if (in_array('CREATE', $tokens) == true
            && in_array('VIEW', $tokens) == true
            && in_array('AS', $tokens) == true
        ) {
            $result['identifier'] = 'CREATE VIEW';

            $index = array_search('VIEW', $tokens);

            $result['tablename'] = /*overload*/mb_strtolower(
                self::getTableName($tokens[$index + 1])
            );
        }

        // Parse ALTER VIEW statement
        if (in_array('ALTER', $tokens) == true
            && in_array('VIEW', $tokens) == true
            && in_array('AS', $tokens) == true
            && ! isset($result['identifier'])
        ) {
            $result['identifier'] = 'ALTER VIEW';

            $index = array_search('VIEW', $tokens);

            $result['tablename'] = /*overload*/mb_strtolower(
                self::getTableName($tokens[$index + 1])
            );
        }

        // Parse DROP VIEW statement
        if (! isset($result['identifier'])
            && substr($query, 0, 10) == 'DROP VIEW '
        ) {
            $result['identifier'] = 'DROP VIEW';

            $prefix  = explode('DROP VIEW ', $query);
            $str = str_replace('IF EXISTS', '', $prefix[1]);
            $result['tablename'] = self::getTableName($str);
        }

        // Parse CREATE DATABASE statement
        if (! isset($result['identifier'])
            && substr($query, 0, 15) == 'CREATE DATABASE'
        ) {
            $result['identifier'] = 'CREATE DATABASE';
            $str = str_replace('CREATE DATABASE', '', $query);
            $str = str_replace('IF NOT EXISTS', '', $str);

            $prefix = explode('DEFAULT ', $str);

            $result['tablename'] = '';
            $GLOBALS['db'] = self::getTableName($prefix[0]);
        }

        // Parse ALTER DATABASE statement
        if (! isset($result['identifier'])
            && substr($query, 0, 14) == 'ALTER DATABASE'
        ) {
            $result['identifier'] = 'ALTER DATABASE';
            $result['tablename'] = '';
        }

        // Parse DROP DATABASE statement
        if (! isset($result['identifier'])
            && substr($query, 0, 13) == 'DROP DATABASE'
        ) {
            $result['identifier'] = 'DROP DATABASE';
            $str = str_replace('DROP DATABASE', '', $query);
            $str = str_replace('IF EXISTS', '', $str);
            $GLOBALS['db'] = self::getTableName($str);
            $result['tablename'] = '';
        }

        // Parse CREATE TABLE statement
        if (! isset($result['identifier'])
            && substr($query, 0, 12) == 'CREATE TABLE'
        ) {
            $result['identifier'] = 'CREATE TABLE';
            $query   = str_replace('IF NOT EXISTS', '', $query);
            $prefix  = explode('CREATE TABLE ', $query);
            $suffix  = explode('(', $prefix[1]);
            $result['tablename'] = self::getTableName($suffix[0]);
        }

        // Parse ALTER TABLE statement
        if (! isset($result['identifier'])
            && substr($query, 0, 12) == 'ALTER TABLE '
        ) {
            $result['identifier'] = 'ALTER TABLE';

            $prefix  = explode('ALTER TABLE ', $query);
            $suffix  = explode(' ', $prefix[1]);
            $result['tablename']  = self::getTableName($suffix[0]);
        }

        // Parse DROP TABLE statement
        if (! isset($result['identifier'])
            && substr($query, 0, 11) == 'DROP TABLE '
        ) {
            $result['identifier'] = 'DROP TABLE';

            $prefix  = explode('DROP TABLE ', $query);
            $str = str_replace('IF EXISTS', '', $prefix[1]);
            $result['tablename'] = self::getTableName($str);
        }

        // Parse CREATE INDEX statement
        if (! isset($result['identifier'])
            && (substr($query, 0, 12) == 'CREATE INDEX'
            || substr($query, 0, 19) == 'CREATE UNIQUE INDEX'
            || substr($query, 0, 20) == 'CREATE SPATIAL INDEX')
        ) {
             $result['identifier'] = 'CREATE INDEX';
             $prefix = explode('ON ', $query);
             $suffix = explode('(', $prefix[1]);
             $result['tablename'] = self::getTableName($suffix[0]);
        }

        // Parse DROP INDEX statement
        if (! isset($result['identifier'])
            && substr($query, 0, 10) == 'DROP INDEX'
        ) {
             $result['identifier'] = 'DROP INDEX';
             $prefix = explode('ON ', $query);
             $result['tablename'] = self::getTableName($prefix[1]);
        }

        // Parse RENAME TABLE statement
        if (! isset($result['identifier'])
            && substr($query, 0, 13) == 'RENAME TABLE '
        ) {
            $result['identifier'] = 'RENAME TABLE';
            $prefix = explode('RENAME TABLE ', $query);
            $names  = explode(' TO ', $prefix[1]);
            $result['tablename']      = self::getTableName($names[0]);
            $result["tablename_after_rename"]  = self::getTableName($names[1]);
        }

        /*
         * DML statements
         */

        if (! isset($result['identifier'])) {
            $result["type"]       = 'DML';
        }
        // Parse UPDATE statement
        if (! isset($result['identifier'])
            && substr($query, 0, 6) == 'UPDATE'
        ) {
            $result['identifier'] = 'UPDATE';
            $prefix  = explode('UPDATE ', $query);
            $suffix  = explode(' ', $prefix[1]);
            $result['tablename'] = self::getTableName($suffix[0]);
        }

        // Parse INSERT INTO statement
        if (! isset($result['identifier'])
            && substr($query, 0, 11) == 'INSERT INTO'
        ) {
            $result['identifier'] = 'INSERT';
            $prefix  = explode('INSERT INTO', $query);
            $suffix  = explode('(', $prefix[1]);
            $result['tablename'] = self::getTableName($suffix[0]);
        }

        // Parse DELETE statement
        if (! isset($result['identifier'])
            && substr($query, 0, 6) == 'DELETE'
        ) {
            $result['identifier'] = 'DELETE';
            $prefix  = explode('FROM ', $query);
            $suffix  = explode(' ', $prefix[1]);
            $result['tablename'] = self::getTableName($suffix[0]);
        }

        // Parse TRUNCATE statement
        if (! isset($result['identifier'])
            && substr($query, 0, 8) == 'TRUNCATE'
        ) {
            $result['identifier'] = 'TRUNCATE';
            $prefix  = explode('TRUNCATE', $query);
            $result['tablename'] = self::getTableName($prefix[1]);
        }

        return $result;
    }

    /**
     * Analyzes a given SQL statement and saves tracking data.
     *
     * @param string $query a SQL query
     *
     * @static
     *
     * @return void
     */
    static public function handleQuery($query)
    {
        // If query is marked as untouchable, leave
        if (/*overload*/mb_strstr($query, "/*NOTRACK*/")) {
            return;
        }

        if (! (substr($query, -1) == ';')) {
            $query = $query . ";\n";
        }
        // Get some information about query
        $result = self::parseQuery($query);

        // Get database name
        $dbname = trim(isset($GLOBALS['db']) ? $GLOBALS['db'] : '', '`');
        // $dbname can be empty, for example when coming from Synchronize
        // and this is a query for the remote server
        if (empty($dbname)) {
            return;
        }

        // If we found a valid statement
        if (isset($result['identifier'])) {
            $version = self::getVersion(
                $dbname, $result['tablename'], $result['identifier']
            );

            // If version not exists and auto-creation is enabled
            if ($GLOBALS['cfg']['Server']['tracking_version_auto_create'] == true
                && self::isTracked($dbname, $result['tablename']) == false
                && $version == -1
            ) {
                // Create the version

                switch ($result['identifier']) {
                case 'CREATE TABLE':
                    self::createVersion($dbname, $result['tablename'], '1');
                    break;
                case 'CREATE VIEW':
                    self::createVersion(
                        $dbname, $result['tablename'], '1', '', true
                    );
                    break;
                case 'CREATE DATABASE':
                    self::createDatabaseVersion($dbname, '1', $query);
                    break;
                } // end switch
            }

            // If version exists
            if (self::isTracked($dbname, $result['tablename']) && $version != -1) {
                if ($result['type'] == 'DDL') {
                    $save_to = 'schema_sql';
                } elseif ($result['type'] == 'DML') {
                    $save_to = 'data_sql';
                } else {
                    $save_to = '';
                }
                $date  = date('Y-m-d H:i:s');

                // Cut off `dbname`. from query
                $query = preg_replace(
                    '/`' . preg_quote($dbname) . '`\s?\./',
                    '',
                    $query
                );

                // Add log information
                $query = self::getLogComment() . $query ;

                // Mark it as untouchable
                $sql_query = " /*NOTRACK*/\n"
                    . " UPDATE " . self::_getTrackingTable()
                    . " SET " . PMA_Util::backquote($save_to)
                    . " = CONCAT( " . PMA_Util::backquote($save_to) . ",'\n"
                    . PMA_Util::sqlAddSlashes($query) . "') ,"
                    . " `date_updated` = '" . $date . "' ";

                // If table was renamed we have to change
                // the tablename attribute in pma_tracking too
                if ($result['identifier'] == 'RENAME TABLE') {
                    $sql_query .= ', `table_name` = \''
                        . PMA_Util::sqlAddSlashes($result['tablename_after_rename'])
                        . '\' ';
                }

                // Save the tracking information only for
                //     1. the database
                //     2. the table / view
                //     3. the statements
                // we want to track
                $sql_query .=
                " WHERE FIND_IN_SET('" . $result['identifier'] . "',tracking) > 0" .
                " AND `db_name` = '" . PMA_Util::sqlAddSlashes($dbname) . "' " .
                " AND `table_name` = '"
                . PMA_Util::sqlAddSlashes($result['tablename']) . "' " .
                " AND `version` = '" . PMA_Util::sqlAddSlashes($version) . "' ";

                PMA_queryAsControlUser($sql_query);
            }
        }
    }

    /**
     * Transforms tracking set for Drizzle, which has no SET type
     *
     * Converts int<>string for Drizzle, does nothing for MySQL
     *
     * @param int|string $tracking_set Set to convert
     *
     * @return int|string
     */
    static private function _transformTrackingSet($tracking_set)
    {
        if (!PMA_DRIZZLE) {
            return $tracking_set;
        }

        // init conversion array (key 3 doesn't exist in calculated array)
        if (isset(self::$_tracking_set_flags[3])) {
            // initialize flags
            $set = self::$_tracking_set_flags;
            $array = array();
            for ($i = 0, $nb = count($set); $i < $nb; $i++) {
                $flag = 1 << $i;
                $array[$flag] = $set[$i];
                $array[$set[$i]] = $flag;
            }
            self::$_tracking_set_flags = $array;
        }

        if (is_numeric($tracking_set)) {
            // int > string conversion
            $aflags = array();
            // count/2 - conversion table has both int > string
            // and string > int values
            for ($i = 0, $nb = count(self::$_tracking_set_flags)/2; $i < $nb; $i++) {
                $flag = 1 << $i;
                if ($tracking_set & $flag) {
                    $aflags[] = self::$_tracking_set_flags[$flag];
                }
            }
            $flags = implode(',', $aflags);
        } else {
            // string > int conversion
            $flags = 0;
            foreach (explode(',', $tracking_set) as $strflag) {
                if ($strflag == '') {
                    continue;
                }
                $flags |= self::$_tracking_set_flags[$strflag];
            }
        }

        return $flags;
    }

    /**
     * Returns the tracking table
     *
     * @return string tracking table
     */
    private static function _getTrackingTable()
    {
        $cfgRelation = PMA_getRelationsParam();
        return PMA_Util::backquote($cfgRelation['db'])
            . '.' . PMA_Util::backquote($cfgRelation['tracking']);
    }
}

redpajama_set_name: RedPajamaGithub


FFA serves as the recognition component of an agricultural education program. Chapters may apply for a variety of awards and recognition programs at the state level. Click below to access application materials for chapter programs.
The National Chapter Award program recognizes FFA chapters that successfully complete an annual Program of Activities (PoA), which includes a series of activities designed to encourage its members to Grow Leaders, Build Communities, and Strengthen Agriculture.
In order to qualify for a state or national award, your chapter must complete at least 15 activities – one for each of the five quality standards in each of the three divisions (Growing Leaders, Building Communities, and Strengthening Agriculture). Additionally, the chapter must meet the minimum requirements as outlined in the National Quality Chapter Standards.
Every chapter that meets the minimum quality chapter standards and completes Form I will qualify as a state superior chapter. To do this, chapters need to conduct one activity related to each quality standard in addition to meeting the minimum criteria outlined in the National Quality Chapter Standards. Chapters receive a superior chapter certificate each year they achieve this level. The chapter will also be eligible to compete for their state's Gold, Silver and Bronze chapter awards.
To compete for state gold, silver or bronze awards, chapters must qualify for the superior chapter award and complete Form II. Chapters use Form II to report goals, plans of action and results/evaluation on three activities for each division. State judges rank the chapters as gold, silver or bronze based on the rubric. Chapters receive a multi-year plaque and yearly plaque inserts, commonly known as spurs, specifying the level achieved each year.
The state's top three gold chapter award winners (or the number equal to 10 percent of the state's total number of chapters, if that number is higher) are eligible to compete for the National FFA Star Chapter Awards.
The application process begins at the state level, with applications due to the Nebraska FFA state office by March 1.
View a (12 minute) video about completing the application here.
Submit applications (Form I and Form II content) by March 1 here.
Learn more about the award program and how to apply by visiting the National FFA site!
The Nebraska Investment Finance Authority (NIFA) annually sponsors a grant program entitled "The Governor's Agricultural Excellence Award" for local agricultural education programs and FFA chapters. Programs/chapters may apply for funds that support local projects in identified topical categories. Four $2,500 awards and fifteen $1,000 awards are available.
Applications are due by September 30th with funds distributed in October. Awarded projects should be completed by March 1 with recognition during the Nebraska FFA Convention.
Download the application instructions now!
Showcase your FFA chapter and local community! Create a chapter booth to display at the Nebraska FFA Convention. The chapter with best rated display will be chosen to represent Nebraska at the National FFA Convention and Expo!
Chapters must register for this event during the convention registration process. See the details below for more information.
FFA Chapters attending a Chapter Officer Leadership Training (COLT) Conference in May may choose to participate in one of three events in competition with the other chapters at that session. See below for specific documents outlining each event. Materials should be brought to COLT Conference with the Chapter.


text:
    <button ng-show="closeable" type="button" class="close" ng-click="close()">
        ×
        Close
    </button>


Maple syrup producers in Southwestern Ontario are having a great season.
The sap has been flowing steadily since the middle of March as temperatures dipped below freezing over night and rose nicely above freezing during daylight hours.
Two producers In the Waterloo Region told the local newspaper that the sugar content this year has been well above average, so they anticipate bumper, if not record, yields this spring.
And then came the snow again, prolonging the season.
By the time it is spring on more than the calendar, it seems likely that records will be broken.


After 5 years playing and exchanging with musicians from Chicago, Nautilis Ensemble created a large french-american orchestra.
On America's "third coast", the shore of Lake Michigan lends it's grace to Chicago's skyline. Lake Michigan is both a geographical wonder and, at times, a treacherous hazard. Since the 17th century, thousands of ships have sunken into the lake and have taken tens of thousands of souls with them to the depths. Likewise, sailors have suffered a similar fate off of the shores of Brittany, where the sea's raw power and inherent danger is at once awe inspiring and terrifying.
This new suite by Rob Mazurek titled, The Wrecks: Short Stories of About the History (Past, Present and Future) of Shipwrecks Off the Coast of Brittany and Chicago, seeks to capture the physicality, horror, spirituality and stories of the sea and lake at the point of sinking a ship or boat. The composition draws off of historical data, first hand accounts of shipwrecks off both shores, magical realism and steampunk aesthetics.


text:
Home ▶ Articles ▶ How Much Water Could "the Sea" Hold?
How Much Water Could "the Sea" Hold?
Eric Lyons, M.Min.
Almost 1,000 years before Jesus set foot on the Earth, the first temple dedicated to Jehovah was built out of Lebanon cedar (the finest there was), costly stones, and pure gold. The Bible indicates that over 183,000 men were involved in the construction of this glorious house of worship during the reign of King Solomon (1 Kings 5:13-16). The vessels that were housed within the temple, and those that remained in the inner court, were equally as elaborate. One of these vessels that stood on the right side of the sanctuary between the altar and the porch of the temple was an immense bronze basin known as "the Sea" (1 Kings 7:23). It was five cubits (7½ feet) high, ten cubits (15 feet) in diameter at the brim, thirty cubits (45 feet) in circumference and rested on 12 bronze oxen (1 Kings 7:23-26, 39; 2 Chronicles 4:2-5,10). Unlike the ten lesser basins that were used to bathe portions of the burnt offerings, the Sea served as a washing pool for the priests (2 Chronicles 4:6). For many years the capacity of the inner court's large basin known as "the Sea" has been at the center of controversy. The reason: 1 Kings 7:26 indicates that it held 2,000 baths. (A bath was the largest of the liquid measures in Hebrew culture; estimates are that it corresponds to anywhere from 4½-9 U.S. gallons). However, 2 Chronicles 4:5 says that the Sea held 3,000 baths. Thus, critics of the Bible's inerrancy have charged that a blatant contradiction exists and that such lack of agreement discredits divine authorship.
There are at least three possible solutions to this alleged contradiction. First, the answer could be that a copyist, while attempting to ensure a "carbon copy" of the manuscript from which he was working, made an error. [For a general background on copyists' errors, please see our foundational essay on that subject.] Keil and Delitzsch, in their commentary on 2 Chronicles, indicated their support of this theory. They tend to believe that the number 3,000 given in 2 Chronicles 4:5 has arisen from the confusion of the letter gimel (Hebrew transliterated letter-number for "3") with beth (Hebrew transliterated letter- number for "2"). By a comparison of the two Hebrew letters, it easily is seen that their shape is quite similar. Even a tiny smudge from excessive wear on a scroll-column or a slightly damaged manuscript could have resulted in making the gimel look like a beth. With such an adjustment, the statements in 1 Kings and 2 Chronicles are harmonized easily. However, it very well may be that this is not a copyist's error at all.
A second possible explanation to this alleged contradiction revolves around a Hebrew word used in 2 Chronicles 4:5 that does not appear in 1 Kings 7:26. Whereas in 1 Kings it says that the molten Sea "held" (ASV) 2,000 baths, 2 Chronicles says that it "received (Hebrew machaziyq) and held three thousand baths" (ASV, emp. added). The difference in phraseology may indicate that the Sea ordinarily contained 2,000 baths, but when filled to its utmost capacity it received and held 3,000 baths (Haley, 1951, p. 382). Thus, the chronicler informs the reader that 3,000 baths of water were required to completely fill the Sea, which usually held 2,000 baths (Barnes). Anyone who has ever been around large pools of water (like a swimming pool) knows that the pool actually can hold a few thousand gallons of water more than generally is kept in it. It very well may be that the wording in 2 Chronicles indicates such a difference about the water level in the Sea.
A third possible solution to this "problem passage" is that the "bath" unit mentioned in 1 Kings was larger than the "bath" unit used in 2 Chronicles. Since the latter account was written after the Babylonian exile, it is quite possible that reference is made to the Babylonian bath, which might have been less than the Jewish bath used at the time of Solomon. As Adam Clarke observed: "The cubit of Moses, or of the ancient Hebrews, was longer than the Babylonian by one palm…. It might be the same with the measures of capacity; so that two thousand of the ancient Jewish baths might have been equal to three thousand of those used after the captivity." In considering a modern-day example, a 20% difference exists between the U.S. gallon and the Imperial gallon, even though the same term is used for both quantities. Thus, this alleged discrepancy may be simply a misunderstanding on the part of 21st-century readers.
The fact of the matter is that critics of the Bible cannot prove that this is a legitimate contradiction. Second Chronicles could represent a copyist's error. On the other hand, I believe that one of the last two explanations represents a more plausible solution to the problem: either (1) the addition of the Hebrew word machaziyq ("received") in 2 Chronicles 4:5 means that the Sea could actually hold 3,000 baths (though it normally held 2,000 baths); or (2) the "bath" unit used during the time of Solomon was larger than the one used after the Jews were released from Babylonian captivity. Until one can prove that these three solutions are not possibilities, he should refrain from criticizing the Bible's claim of divine inspiration.
Barnes, Albert (1997), Barnes' Notes (Electronic Database: Biblesoft).
Clarke, Adam (1996), Adam Clarke's Commentary (Electronic Database: Biblesoft).
Haley, John W. (1951 reprint), Alleged Discrepancies of the Bible (Nashville, TN: Gospel Advocate).
Jamieson, Robert, et al. (1997), Jamieson, Faussett, Brown Bible Commentary (Electronic Database: Biblesoft).
Keil, C.F. and F. Delitzsch (1996), Keil and Delitzsch Commentary on the Old Testament (Electronic Database: Biblesoft), new updated edition.
Why Do You Believe "Obedience" Is Necessary to Salvation?
The Remarkable Reality of Isaiah's Messiah


The tragic deaths of Philando Castile and Alton Sterling last week evoked cries of outrage, despair, and an urgent need for change. That's when the Express decided to give this paper over to readers, in an attempt to unite and amplify those feelings. And, despite the short notice, dozens of people sent us their words and thoughts. We are truly humbled.
This issue's front cover features names of Black and brown victims in the last decade. But the following words speak to this country's legacy of prejudice and injustice toward Black men, women, and children — that must end now.
Black faces, weeping mothers and screaming babies. Another loss of a father, son, friend. The Black Man.
Time and time again. The same headline.
A different place, different face, but always the same race.
We have more to offer this world and other spaces to fill ... outside of your cuffs and coffins.
For the past few days, I have struggled getting out of bed. I didn't have much trouble when one of my favorite singers, Christina Grimmie, was shot and killed. I laid still after the shooting in Orlando, not crying loud so as not to disturb my family.
But after these recent police shootings targeted toward Black men, I have started having scary thoughts: "I don't want to do this. I can't do this. I don't want to do this anymore." The pain is so, so immense.
Truthfully: I want to forget.
Growing up in Oakland, I've been aware of gun violence from a young age. I detached myself from the disturbing feeling it brought. Then, my brother's friends started dying. My friend's friends started dying. I was suddenly aware that I was not safe. I am not safe as a person living in Oakland, not as a Black person, not as a queer person. Not around police.
I can't describe to you the feeling that came onto me upon realizing that, for my entire life, I have never been safe. Maybe I already knew. I think I did. But for the first time, I've been forced to look at the facts straight in the eye. All of that truth, it stared at me deep and said, "I've got you." And it's been hard for me to breathe ever since.
I shared my worries about thoughts on not wanting to do "this" on my Facebook page. People started commenting that it was normal, that they felt the same. And maybe it is normal. But it isn't right, and I can't brush it off.
It felt strange to know that so many of my non-Black friends were going to protests and vigils while I preferred to stay at home. I am Black — does that mean I can take all of this pain?
The answer is no. I will never go to a protest. I cannot go to a vigil. I know myself well enough to know I am not emotionally capable of handling it.
But I understand the pain. The last time I was too depressed to get out of bed was a year ago, in the lowest point of my life. Not everyone has experienced this before. I want to say to all the people who are finding themselves steeped in despair: It is OK if you do not want to go out and fight. It is OK if you don't want to turn to social media.
Even the greatest soldiers have to rest after war.
"Why did they kill him?"
"Did they kill him because he was wearing a red shirt?"
Those were the words coming from my four-year old Black son as we watched television and together witnessed the brutality and killing of Alton Sterling by Baton Rouge police officers.
So, in my four-year-old's mind, the only connection he could make for what he was seeing was that a man was killed because he wore a red shirt, and it was wrong for police officers to take his life.
What I didn't tell my son is that Alton was killed not because his shirt was red, but because his skin was black, his gender was male, and that, one day, he will be looked upon the same way: a threat because he is breathing and Black.
I know enough to know that my son's threat index is rising by the year. My son and I have robust conversations about everything from Curious George and Fireman Sam to Hillary Clinton and Donald Trump. But I'm also beginning to incorporate race and social justice into our conversations, which he tries to understand but doesn't yet.
Will my son sell DVDs and CDs outside of a store and have the police called on him? Will he be driving in a car with his girlfriend, like Philando Castile, and be pulled over by police — and within minutes be shot to death in the front seat?
To all these things I say: I don't know. I can't predict every experience in his future, I can only prepare him for it. I strive for him to be well-educated, kind, strong, confident, and enlightened. But none of these things are a shield against racism, implicit bias and oppression.
What we must realize is that these instances of police interactions with Black men, boys, women and girls is not new. What is new is the technology to record it, and social media to instantly live-stream, tweet and post. These images provide us a window for what many in the Black community have experienced for centuries, but with it now captured for all of us to see, the trauma and the pain is that much deeper. We must recognize that we have all witnessed the final seconds and ending of life: blood seeping out of their bodies, arms and legs twitching, painful moaning and finally their last breath.


text:
Academic Advocates collaborate across the campus community with a broad network of offices spanning academic advising, financial aid, registrar, student business services, and student affairs. Academic Advocates also work closely with each of the academic colleges with connections to faculty and staff across all academic disciplines.
Undergraduate degree-seeking students identified, or those referred, who may be experiencing barriers to graduation will receive direct outreach from an Academic Advocate to address issues in a timely manner, review their progress and options, and to advise them towards graduation.
Student referrals are encouraged when an academic barrier to persistence, progression and graduation is identified. Referrals may come from a variety of sources including:
Academic Care Team
Academic and Pre-Professional Advising
Faculty/Instructors
Self-Referrals
Student Peers
University Staff and Personnel
For referrals regarding students who are exhibiting concerning behaviors (suicidal expression, threat of harm to self/others, deep sadness, confusion, threats, etc.), please report this concern to the Behavioral Risk Assessment and Consultation Team via bract@umbc.edu or calling 410-455-2393. Violent acts should be reported immediately to the University Police at 410-455-5555.
The Office of Academic Advocacy welcomes family, friends and peers of UMBC undergraduate students with an academic or institutional concern to contact us when there may be a barrier to persistence, progression and timely degree completion. While we will do our best to provide accurate information, timely guidance, and make connections with appropriate resources, please be advised that student information is protected by the Family Educational Rights and Privacy Act (FERPA) which prohibits the disclosure of many types of student information including that as related to the student's educational record. Students can complete a FERPA Release Form, permitting staff in the Office of Academic Advocacy to speak with more specificity about a student's educational record.


text:
Meet St. Joseph County Auditor Candidate Mike Hamann
Kyle W. Bell | November 3, 2014
Categories: Politics, South Bend
The South Bend Voice is publishing a series of articles on local candidates running for county offices this fall. We believe that it is vitally important for voters to be informed before they head to the ballot box on November 4.
While we do not endorse individual candidates, we will provide the equal opportunity for candidates to share their views with the public through a questionnaire.
No alterations have been made — even for spelling and grammar. We believe that our job is to ask the tough questions and candidates' responsibility is to speak directly to voters.
With that said, let's introduce Mike Hamann, the Democratic nominee for St. Joseph County auditor. Republican candidate Gerard Arthus was provided the opportunity to participate but did not respond to our request.
Full Name: Mike Hamann
Current Job Title/Employer: Teacher at St. Joseph High School and County Council District A
College Major: History and Theology (BA in History; MA in American History and MA in Theology)
Alma Mater: University of Notre Dame
Experience in Elected Office: St. Joseph County Commissioner 1999-2003; St. Joseph County Council 2009-2014
Candidate Questionnaire
There was an issue earlier this year with the county's balance sheet. An audit from the State Board of Accounts found that there was more cash across the county's bank accounts than what was recorded. No money was missing but the issue of an inaccurate account balance is a concern for voters. What would you recommend that the county do to prevent future mistakes?
Continue to improve our technology.
How would you increase transparency in county government reporting?
Digitize more information and make it available on-line.
What would your top priorities be as the next county auditor?
I want to make sure that taxpayers money is well-spent and not wasted. In addition, I want to make sure that essential government services are provided despite the state-mandated revenue cuts.
What makes you qualified for the position of auditor?
My qualifications stem from three factors. First, I have nearly a decade of experience of putting together county budgets. Secondly, I have good working relationships not only with county department heads but political and local leaders in our community as well. Finally, the Auditor's job requires executive experience which I gained as a county commissioner.
Why should voters support your candidacy?
People should seriously consider voting for me because the job is too important to trust to someone who is inexperienced and lacks the requisite temperament and judgment.
We would like to thank the candidate for taking the time to respond to our questionnaire. Click here to learn more about St. Joseph County Prosecutor's race. Click here to learn more about the St. Joseph County Clerk's race. Be sure to vote on Tuesday, November 4.
Follow South Bend Voice on Facebook and Twitter.
Tags: auditor, candidate, Democrat, election, Mike Hamann, questionnaire, st. joseph county
← Meet the St. Joseph County Prosecutor Candidates: Ken Cotter and Jeff Sanford
VIDEO: Pieris Project Studies Effects of Climate Change on Butterflies →
South Bend Voice | February 22, 2021
South Bend and St. Joseph County offices re-open at County-City Building
Staff | January 24, 2021
City, county offices continue to offer limited in-person access due to pandemic


text:
The Cost of Mediocrity
2	May 22, 2020 2:05 AM
There is a lot of public interest around the termination of Energy Mutodi's appointment as Deputy Minister for Information, Publicity and Broadcasting Services.
Source: The Cost of Mediocrity – The Zimbabwean
Energy Mutodi
Energy Mutodi is a trained High School Teacher who has also ventured into music, real estate, and politics.
No doubt he is a versatile enterprising character, and it is unfair to take away his drive for personal development. He has got a number of degrees reported to be in his name, including an academic doctorate that he happily flaunts around with a trademark social media profile picture of him donning a PhD cap and gown.
Mutodi's music career was more of a funded project that depended on massive promotion of well packaged mediocrity than talent and substance.
His venture into real estate left a legacy of conning, embezzlement, broken promises, legal battles, undelivered results, public anguish, mass betrayal, and lost investments.
There is next to nothing to show for the hundreds of thousands of dollars, if not millions that people invested into Mutodi's housing project, only to be told endless stories of why the promised land or houses were taking forever to be delivered, something that did not materialise in the end.
Little is known about his teaching career, but his subsequent conduct and character in the public domain do not read like that of someone that could be trusted with moulding future lives of children.
So how did someone like this end up a whole Deputy Minister? His mediocrity is a matter definition than opinion, and it is written all over his face, voice and character. He openly carries himself like an annoying idiot, and there is no second-guessing about that. A two-minute visit to his Twitter account is all that is needed to substantiate the assertion above.
Patronage rewards and it rewards handsomely sometimes. This is why Mutodi looked at our political system and realised that all he needed was to align himself with ruling political elites, arm himself with an aura of intellectualism; contrived, acquired, or earned; whichever was quicker and achievable.
So he went into his scandalous housing project fully knowing that he just needed an exit plan after collecting people's hard-earned money in the pretext that his project would deliver cheap homes to people. Of course, the exit plan for all such people like Mutodi is impunity deriving from corrupt political connections connecting right to top echelons of power.
In short, he joined the notorious cartel of land barons that have ripped off Zimbabweans in recent years; coming clothed in ZANU-PF robes. They are many, and only those that went astray with political correctness have been punished- albeit politically and never judicially. They can't be taken to jail or to court for fear of exposing the worst in the system.
This is the only reason Energy Mutodi was serving as a Deputy Minister, not a long term prisoner.
So the President saw it fit to politically reward Mutodi for his appreciated runner role against G40 machinations when factionalism was at its peak in Zanu-PF.
He did a lot to send coded messages about ED's hidden presidential ambitions at the time, including the famed picture where he and ED posed with a mug marked "I am the Boss."
That did not only sent shockwaves into the opposite camp but also got Jonathan Moyo to look for Sydney Sekeramayi as a counter decoy to try and neutralise ED's influence within ZANU-PF.
Certainly, no one bothered to orient Mutodi on policy regarding Information, Publicity or Broadcasting. There is a lady Minister there doing a fairly decent job overseeing the sector, and Mutodi was deployed there as a do-nothing deputy, only there to enjoy the perks.
Idleness and mediocrity are a bad combination. They created a nonsense-tweeting idiot out of the evidently energetic Energy Mutodi, and the man became a Grade A Nuisance on social media, annoying friends, foes and neutrals in equal measure.
He was a burdensomely unhelpful comrade to the Vakarashi Brigade and a provocative idiot to the opposition.
The cost of rewarding mediocrity is what Mutodi's has taught us as a nation.
What was such a man doing in the top 100 politicians governing our country? He does not even deserve to govern himself, all respect being accorded to him, and to whoever appointed him.
Now that he has been relieved of his duties in government, can the appointing authority begin to look at merit before loyalty, merit before factional affiliation, merit before patronage, and of course merit before ethnicity and tribe?
Zimbabwe we are one and together we will overcome. It is homeland or death!
Brutality backfires as chief, residents sue police and soldiers for assault
MISA confronts ZMC over new categories for journalists
dubonus 2 years ago
Mediacracy is something he can only aspire to.
mediocrity is something he and his colleagues can only aspire to.


text:
Business and Accounting
Logic and Mathematics
Medicine, Health, and Nutrition
Regional Interest
Sports and Risk Management
Criminal Justice:
Other CAP Subjects
Comp Copy Info
Faculty/Authors
Pro Forma Policy
Go To CAP Law
e-ISBN 978-1-61163-934-6
Capital Punishment's Collateral Damage
by Robert M. Bohm
Tags: Death Penalty/Capital Punishment
Available on Redshelf
The literature on capital punishment is voluminous. For nearly 250 years, scholars have discussed and debated such issues as its deterrent effect, or lack thereof; retributive and religious arguments; costs; administration, including miscarriages of justice and whether it is imposed in an arbitrary and discriminatory manner; and whether methods of execution are cruel and unusual.
Conspicuously missing from this literature is the human element; the impact of capital punishment on the lives of those who are involved in the process by calamity, duty, or choice. Capital Punishment's Collateral Damage seeks to rectify that omission by allowing participants in this ritual of death to describe in their own words their role in the process and, especially, its effects on them. In this way, we can begin to understand the reach of capital punishment beyond just the victim and the perpetrator. We can begin to understand the collateral damage of capital punishment.
"Capital Punishment's Collateral Damage enriches the discussion on capital punishment by including groups (e.g., police officers, defense attorneys, prosecutors, judges, correctional officers, etc.) intimately involved in the process of capital punishment who rarely receive any attention about their involvement. This examination of the ways in which their roles in the process affect their careers and personal lives adds a unique contribution to the death penalty literature."
— Melissa J. Stacer, University of Southern Indiana
"Another impressive book by a preeminent capital punishment scholar. This should be required reading for every student of the death penalty."
— Stacy K. Parker, Muskingum University
"Clearly written and extensively documented, this book reflects the expertise of the author, who has published extensively on capital punishment. It makes an important contribution by pulling together in one source the disparate and often neglected experiences of people involved in a capital case." — Criminal Law and Criminal Justice Books
700 Kent St, Durham NC 27701 • (919) 489-7486 • Fax (919) 493-5668
About Us | Comp Copy Information | Contact Us | Order Status | Returns Policy | © CAP 2020


text:
PetsTime > Dog > Dog Behavior > Do Dogs Cry? | Why Does Your Dog Cry Tears and Whine
Do Dogs Cry? | Why Does Your Dog Cry Tears and Whine
Have you ever seen your dog shed a tear and wondered, do dogs cry? It's a fair question – after all, we humans tend to cry when we're sad, so it stands to reason that our canine companions would do the same. Let's take a closer look at dog tears.
Sarah Jameson January 31, 2023 0 Comments
Dogs do cry, but it's not the same as human crying 🐕
When they are sad, dogs usually whimper and whine, not cry 🐕
Excessive crying might be a sign of some underlying medical condition 🐕
1 Do Dogs Cry?
2 Can Dogs Express Emotions?
3 Can Dogs Produce Tears?
4 My Dog Is Crying – Possible Health Problems
5 Signs of Sadness in Dog Behavior (Not Only Crying Tears)
6 How Can You Help When Your Dog Is Sad?
7 Do Dogs Cry FAQs
7.1 How Do You Know When a Dog Is Crying?
7.2 Do Dogs Cry Tears When Sad?
7.3 Do Dogs Understand Human Crying?
Do Dogs Cry?
There's a lot of debate over whether or not dogs cry, and the answer isn't completely clear. Some people believe that dogs produce tears as a way to express their emotions, just like humans do. Others believe that the tears are simply a result of dog allergies or other medical issues. However, there hasn't been any scientific evidence to support either side of this argument. So, do dogs cry? The answer to this question is still up for debate.
Can Dogs Express Emotions?
What we do know is that dogs are capable of expressing a wide range of emotions, just like humans. They can feel happiness, sadness, love, and anger, among other things. And just like with humans, these emotions can sometimes be expressed through tears.
So it's definitely possible that dogs do cry as a way to express their feelings. However, there hasn't been any concrete evidence to support this claim. And until there is, we won't know for sure whether or not dogs cry like we do.
But even if dogs don't cry in the traditional sense, they still have the ability to communicate their feelings to us in a powerful way. For example, studies have shown that when dogs are happy they wag their tails more vigorously, when they are sad they tilt their heads downward, and when they are afraid they tuck their tails between their legs.
It is important to note that just because dogs can express emotions does not mean that they always do so. In fact, many dogs may not show any outward signs of how they are feeling, and may only reveal their emotions through their behavior. This means that it is often up to us humans to interpret the emotions that our dogs are feeling. With time and patience, however, we can usually learn to read our dog's emotional cues fairly accurately.
See also: Do Dogs Recognize Their Siblings? Littermates Later in Life
Can Dogs Produce Tears?
Dogs have tear ducts and lacrimal glands, which allow them to produce real tears. However, it is unknown if dogs actually cry out of sadness or happiness. Some people believe that dogs can cry because they can make tears, while others believe that dogs cannot make tears and only produce mucus. Studies have not been able to prove either side correct, so the answer to this question is still unknown.
What we do know is that dogs use their tears in a number of ways. Dogs will use their tears to clean their eyes, to signal dominance or submission, and to show affection. In fact, when a dog licks another dog's face, they are often licking away the other dog's tears. This may imply that dogs clearly understand the importance of tears and what they can signify.
My Dog Is Crying – Possible Health Problems
So, why do dogs cry? Let's take a look at some possible health issues, dogs might be expressing by crying.
If your dog has watery eyes, it could be a sign that they are in pain or experiencing another health problem. Here are some of the most common causes of dog tears:
Pain: Dogs can cry out in pain for a variety of reasons, such as injuries, arthritis, and dental problems.
Infection: A bacterial or viral infection can cause a dog to cry from the pain and discomfort it causes.
Allergies: Dogs can experience allergies just like people do, and these allergies can cause them to cry excessively.
Stress: Dogs can become stressed from changes in their environment or routine, which can lead to them crying excessively.
Ear infections: Ear infections are a common issue in dogs and can cause them to cry from the pain and discomfort it causes.
Bladder infections: Dogs can develop bladder problems, which can lead to them crying while they urinate.
Other health concerns: Dogs can experience a wide variety of other health problems that can cause them to cry.
If your dog is crying a lot, it is important to take him or her to the veterinary clinic to determine the cause of the trouble. The veterinarian will be able to perform tests and diagnose the issue so that it can be treated.
It's important to note that a few occasional tears are usually not serious. There could have been dust in your pooch's eye, or he smelled something funny. So pay attention to the frequency and the environment of when your dog is crying.
Signs of Sadness in Dog Behavior (Not Only Crying Tears)
Dogs are known as man's best friend for a reason. They are always happy to see us and are always there for us when we need them. However, just like people, their canine friends can get sad too. But they don't have to shed tears to show us that there is something wrong. Here are some ways to tell if your dog is feeling down:
they stop eating or drinking;
they stop playing or interacting with you and other animals;
they have a decreased appetite;
they have a decrease in energy;
their tail is between their legs, or they are cowering away from people or other animals;
their eyes may be red or watery;
their vocalization is changed: they whine, whimper or howl much more than they normally do.
See also: Do Dogs Laugh? Can You Make Your Dog Laugh?
How Can You Help When Your Dog Is Sad?
If you notice any of these signs in your dog, it is important to take them to the vet to get checked out. There may be an underlying medical condition causing your dog's sadness, and it is best to rule that out before starting any type of behavior modification or treatment.
If there is no underlying medical condition, then you can start working on helping your dog feel better. This may include things like increasing their exercise, providing more playtime, or working on obedience training to increase the bond between you and your canine friend. No matter what, it is important to be patient and understanding with your dog during this time. They are relying on you to help them through it.
All in all, do dogs cry? Yes, but not necessarily in a way we do. Dogs are capable of experiencing a wide range of emotions and are able to understand emotions of their owners. This makes them some of the most complex creatures on earth and is one of the many reasons why we love them so much.
Do Dogs Cry FAQs
How Do You Know When a Dog Is Crying?
One of the most common ways to tell when a dog is crying is through his body language. Dogs express themselves mainly through physical cues, so it's important to pay attention to their behaviors. One clear signal may be that they are whimpering or whining, which indicates an emotional response. This could mean that they are feeling scared, stressed, frustrated or bored.
See also: Why Do Dogs Lick Their Paws? Find Out Now!
Do Dogs Cry Tears When Sad?
When a human is sad, it's common to see tears flowing from their eyes. We've all had that experience in our lives. But when it comes to canine companions, there isn't quite as much evidence of them crying tears when they are feeling distressed or unhappy.
Dogs do express their emotions in other ways, though, such as through body language and behavior – like cowering during thunderstorms or trembling when fearful. Tears may be an additional mechanism for showing sadness in animals, but unfortunately there hasn't been any empirical research on the subject yet, so no one knows with certainty whether they really cry emotional tears or not.
Do Dogs Understand Human Crying?
Yes, dogs absolutely understand human crying! It might not be in the same way we do, but our canine companions are quite intuitive when it comes to emotions and recognize how humans are feeling. Studies show that dogs can pick up on what's different when someone is upset or sad through subtle changes in body language and vocal cues.
Do Cats Cry? All About Meowing And Kitty's Tears
Why Does My Cat Cry at Night? How to Help Your Kitty Get More Sleep
Understanding Cat Language: Why Do Cats Meow?
Do Dogs Get Headaches? Signs and Symptoms of Canine Headaches and What to Do If Your Pup Suffers from Migraine
Why Do Cats Purr? Check the Reasons Behind this Characteristic Behavior
How to Express Dog Anal Glands and How to Tell When They're Impacted?
Hawaiian Dog Names With Meanings: Aloha Is Not the Only Option!
Why Is My Dog Scared of Everything? Reasons and Tips How to Help Him
Why Does My Dog Throw Up After Drinking Water? Quick Answers
Do Dogs Recognize Their Siblings? Littermates Later in Life
Do Dogs Love Their Owners? Ways Dogs Show Love
Do Dogs Have a Sense of Time? Your Dog May Know What Time It Is Better Than You Do
Do Dogs Like Hugs? They Show Affection By Cuddling, But Don't Like Being Embraced
Do Dogs Burp? What Does It Mean if Your Dog Burps a Lot?
Do Dogs Get Jealous When You're Spending Time with Someone Else? What Can You Do about It?
Do Dogs Watch TV? They Understand More Than You Think
Do Dogs Like Kisses? The Ways Animals Show Affection and How to Tell If Your Dog Likes Being Kissed
Do Dogs Have Nightmares? All You Need to Know About Dogs, Dreams And Nightmares