A nasty pandemic problem: More flushed wipes are clogging pipes, sending sewage into

Some wastewater utilities say they are facing a nasty pandemic problem: More disposable wipes being flushed down toilets are clogging pipes, jamming pumps and sending raw sewage into homes and waterways.
Utilities have urged customers for years to ignore “flushable” labels on increasingly popular, premoistened wipes used by nursing home staffs, potty-training toddlers and people who shun toilet paper. But some utilities say their wipe woes significantly worsened a year ago during a pandemic-induced toilet paper shortage, and have yet to let up.

They say some customers who resorted to baby wipes and “personal hygiene” wipes appear to have stuck with them long after toilet paper returned to store shelves. Another theory: People who wouldn’t take wipes to the office are using more while working from home.

More disinfectant wipes also are getting improperly flushed, utilities say, as people sanitize counters and doorknobs. Paper masks and latex gloves tossed into toilets and washed into storm drains also are jamming sewer equipment and littering rivers.
At WSSC Water, which serves 1.8 million residents in the Maryland suburbs, workers at its largest wastewater pumping station removed about 700 tons of wipes last year — a 100-ton jump over 2019.
“It started last March and really hasn’t eased up since,” said WSSC Water spokeswoman Lyn Riggins.
Utilities say the wipes twist into ropy wads, either in a home’s sewer pipe or miles down the line. They then congeal with grease and other cooking fats improperly sent down drains to form sometimes massive “fatbergs” that block pumps and pipes, sending sewage backing up into basements and overflowing into streams. On Wednesday, WSSC Water said 10,200 gallons of untreated sewage reached a creek in Silver Spring after an estimated 160 pounds of wipes plugged a pipe.
You’ve seen the gross sewer-blocking fatberg pics? Here’s how government, industry and shoppers can all help stop wet wipes clogging our drains and oceans.

Fatbergs – those revolting sewer mountains made of wet wipes, grease and other gunk – have been cropping up all over the place in the past year or so, from London and Cardiff to Staffordshire and Devon.
As well as causing trouble in wastewater systems, wipes can find their way into oceans. Along with other types of plastic pollution, they can cause long-term problems for sea creatures and the marine environment.
Wet wipes made up more than 90% of the material causing sewer blockages that Water UK investigated in 2017
Friends of the Earth commissioned a report from research group Eunomia, Reducing Household Contributions to Marine Plastic Pollution [PDF]. This reveals our everyday habits that result in all sorts of plastics getting into our seas. Sometimes from seemingly unlikely sources, such as medical wet wipes.

Used to be that only babies’ behinds were cleaned up with wet wipes. But in recent years, the popularity of similar products for adults has surged—they’re part of the $1.4 billion and growing “personal wipes” category of hygiene products, according to a market research report. You’ve seen them on drugstore shelves, and maybe you even use them. But while adult wipes are clearly good for business, we were curious: Are their any health benefits to using them instead of toilet paper?
Basically, no. “There is no medical advantage to cleaning up with baby wipes for adults as opposed to toilet paper,” says Holly Phillips, M.D., a women’s health specialist in New York City and a medical contributor to CBS News.  “It comes down to what makes you feel clean and fresh.” Still, keep in mind that some wipes might be pre-moistened with aloe, vitamin E, alcohol, and other gentle- or harmless-sounding additives that might actually irritate sensitive skin and leave your bum stinging and inflamed. “Play it safe by going for an unscented, unmedicated, chemical-free brand of wipe,” says Phillips.
More important than what you wipe with (remember, until toilet paper was invented in the 19th century, people used newspaper, clay, leaves, and even corncobs, which couldn’t have felt good) is how you wipe. You’ve heard a million times to do it from front to back to prevent the germs present in feces from getting near your urethra and causing a urinary tract infection—but it’s still smart advice, says Phillips. You also want to wipe firmly but not press or rub hard, which can lead to small abrasions in your anal area. And don’t leave the bathroom until you’re all cleaned off if you can help it. Leaving a little poop behind can lead to itching and irritation—not to mention a surprise on your thong.
Finally, even though adult wipes are supposed to be flushable, sewer and waste officials can tell you that it isn’t true, and wipes are clogging up pipes and sewers, causing major damage. “Just toss them in the trash or diaper disposal,” says Phillips.
Household wipes are hard to come by these days. As the number of cases of the novel coronavirus began to climb quickly in the U.S. in March, worried consumers began pantry-loading supplies like household cleaners and disinfectants, including wipes. For months, shelves have been emptied of these products, and when they are restocked, they’re gone within the hour. 
WASHINGTON — The coronavirus pandemic has led many people to buy whatever they can to protect themselves, such as, disinfectant dry wipes, masks and gloves.
However, the methods some people are using to get rid of the protective and cleaning tools are becoming a problem.
“Messy, gross,” is how Lyn Riggins, who is the spokesperson for WSSC Water, described what workers are pulling out of pumps at water treatment facilities.

3D meshing of cyllindrical domain into hexahedral elements

I need a solution for generating a hexahedral mesh for a cyllindrical domain in Mathematica/AceFEM. Ideally, it should be close to cyllindrical symmetry not very far from the center. The best option would be to program this directly in Mathematica, but calling some external software installed on Windows and accessible via cmd by Mathematica’s Run command would also do a job. enter image description here

Do you have any ideas how to cope with such a problem?

Run function after loading components into gutenberg editor sidebar

I would like to run a function after I load the meta box/components into the sidebar just in the gutenberg editor.

I know I could do it with add_action(‘add_meta_boxes’), but the function I want to run only works in the gutenberg editor. So how do I make this shot on Gutenberg’s JS?

Tried something like below, but doesn’t work.

wp.hooks.addAction('add_meta_boxes', 'cgb/generic-call-block', function () {     console.log(         'after the editor sidebar components have loaded'     ) }) 

PostgreSQL 11 – Can I turn a schema into the wild west?

I have been given a task to set up a development database where all users able to access a given project schema (each project would have its own schema) would be able to do anything to any table, including to tables they do not own. The reason I have been asked to make the schemas a free-for-all is my supervisor does not want any time spent administering the database beyond me adding/deleting schemas. I am trying to set this up with a PostgreSQL 11 Amazon RDS.

For the test schema, in an attempt to simplify the SQL, I have created a group role and added the users working on the project (each has inherit permissions enabled) to the group. I am then granting permissions to the group at the database and schema level. My hope was that everyone in the group would be able to do anything the group can do, and do it to table(s) created by any other user in the group.

My initial attempt had limited success. I can add a table and the other users can view the table, append data to the table, edit individual cells, and delete rows. However, they are unable to delete the table I created. In addition, the users can only do that to tables I create. If another user creates a table, no one is able to even view the table, even though I set default privileges on the schema before anyone created any tables. I came across the reason for this while trying to make it work and am hoping there is a way around it.

To open things up as much as I can, I took the following actions:

  • Gave the group role full permission to the database with GRANT ALL ON DATABASE dbname TO grpname;

  • After I created the schema I ran: GRANT ALL ON SCHEMA testschema TO grpname;

    ALTER DEFAULT PRIVILEGES IN SCHEMA testschema GRANT ALL ON TABLES TO grpname;

    ALTER DEFAULT PRIVILEGES IN SCHEMA testschema GRANT ALL ON SEQUENCES TO grpname;

    ALTER DEFAULT PRIVILEGES IN SCHEMA testschema GRANT EXECUTE ON FUNCTIONS TO grpname;

To confirm the reason I found regarding why ALTER DEFAULT PRIVILEGES only gave those privileges to tables I created, I created a new schema with the group role as the owner and added tables as several users, including myself. Since the group role did not create the tables, its members did, no one could view any table other than their own, let alone modify another user’s table.

A final wrinkle involves where this development database is located. It is being added to a server group that includes our main production database so I cannot make all users a superuser. Not sure that would fix things, but thought I would mention it.

Have I missed/overlooked something that would allow a schema free-for-all?

how to change list of some scalars into vectors?

I have a pair of equations f= {eq1,eq2} that are (x,y) dependent. I take derivative by (x) and (y) for each equation, for example,

 Grad[f, {x, y}] . {1, 1}]  

and multiply it with a Xlist. The functions are dependent on Xlist too say {{1,2,3},{2,2,4}} For some functions (say f1) my output is listed like this

 {{12},{2}}  {{12,3,4},{21,2,3}} 

The function f1 usually is

 f1={xy+x^2,xy+y^2 }   

form. For other functions like

 f2 ={x,y^2}  

or

 f3={x+4,y-2}  

the output is

{1,{21}} {1,{2,3,4}} 

for f1 and

 {3,6} 

for f2. It causing me problems for next calculations because the output format is required to be like {{},{},{}….} etc. Looks like derivative of functions such as f2 and f3 yield constant or scalar f2 = (scalar, vector) and f3 =(scalar,scalar). How do I make scalar stay as a vector? How do I turn list for example {1,{3,4,..} or {{3,2,2},3} into {{1},{3,4,..} or {{3,2,2},{3}}? I have tried a rule method but my approach did not seems to pan out correctly,

 code /. {a_,{b_}}->{{a},{b}} 

because output of size derivative vary with list of functions and Xlist.

One-row postgres query as CTE/subquery much slower when passing subquery field into function / maybe related to inlining?

I’m using postgres 13.3 with inner and outer queries that both only produce a single row (just some stats about row counts).

I can’t figure out why Query2 below is so much slower than Query1 (they should basically be almost exactly the same, maybe a few ms difference at most)…

Query1: This query takes 49 seconds:

WITH t1 AS (         SELECT             (SELECT COUNT(*) FROM racing.all_computable_xformula_bday_combos) AS all_count,             (SELECT COUNT(*) FROM racing.xday_todo_all) AS todo_count,             (SELECT COUNT(*) FROM racing.xday) AS xday_row_count         OFFSET 0 -- this is to prevent inlining )  SELECT             t1.all_count,             t1.all_count-t1.todo_count AS done_count,             t1.todo_count,             t1.xday_row_count FROM t1 

Query2: This query takes 4 minutes and 30 seconds (only one line difference):

WITH t1 AS (         SELECT             (SELECT COUNT(*) FROM racing.all_computable_xformula_bday_combos) AS all_count,             (SELECT COUNT(*) FROM racing.xday_todo_all) AS todo_count,             (SELECT COUNT(*) FROM racing.xday) AS xday_row_count         OFFSET 0 -- this is to prevent inlining )  SELECT             t1.all_count,             t1.all_count-t1.todo_count AS done_count,             t1.todo_count,             t1.xday_row_count,             -- the line below is the only difference to Query1:             util.divide_ints_and_get_percentage_string(todo_count, all_count) AS todo_percentage FROM t1 
  • Before this point, and with some extra columns in the outer the query (which should have made almost zero difference), the whole query was insanely slow, like 25 minutes, which I think was due to inlining maybe? Hence the OFFSET 0 being added into both queries (which does help a lot).
  • I’ve also been swapping between using the above CTEs vs subqueries, but with the OFFSET 0 included it doesn’t seem to make any difference.

Here’s the definitions of the functions being called in Query2:

CREATE OR REPLACE FUNCTION util.ratio_to_percentage_string(FLOAT, INTEGER) RETURNS TEXT AS $  $   BEGIN     RETURN ROUND($  1::NUMERIC * 100, $  2)::TEXT || '%'; END; $  $   LANGUAGE plpgsql IMMUTABLE;   CREATE OR REPLACE FUNCTION util.divide_ints_and_get_percentage_string(BIGINT, BIGINT) RETURNS TEXT AS $  $   BEGIN          RETURN CASE          WHEN $  2 > 0 THEN util.ratio_to_percentage_string($  1::FLOAT / $  2::FLOAT, 2)         ELSE 'divide_by_zero'          END         ;  END; $  $   LANGUAGE plpgsql IMMUTABLE; 
  • As you can see it’s a very simple function, which is only being called once, from the single row the whole thing produces… how can this cause such a massive slowdown? And why is it affecting whether postgres inlines the initial subquery/WITH (or whatever else might be going on here)

EXPLAIN ANALYZE outputs:

  • Query1: https://explain.depesz.com/s/bq7u
  • Query2: https://explain.depesz.com/s/9w3rY

php mysql create an entry into a field. (INSERT INTO) WHILE logged in currentuser/session

I did the php registration system and it works https://www.tutorialrepublic.com/php-tutorial/php-mysql-login-system.php

but i created extra fields in the DB so the user can add some data to the database.

All search results are only to add to database from scratch, not from CURRENT SESSION USER. or they are just how to make php user reg systems but no further PHP CURRENT SESSION user interaction with DB

DB structure is just like on that site, i posted above, but created a URL field so a user can save their favorite URL. DB = **users > username > URL ** once i get that working im going to figure out how a user can append to the field and keep adding URLs

i came up with this.. .

if (isset($  _SESSION['loggedin']) && $  _SESSION['loggedin'] == true) { echo "<a href="file.php?save=yes>Add to Favorites</a>";}   if(isset($  _GET['save'])){          echo "got a save";      userID = $  _SESSION["username"];      echo $  userID; //it does give the current username, meaning im logged in , session-start is on the header .        $  URL = $  _GET['URLforbookmark'];      $  sql = "INSERT INTO users (URL, UserID)      VALUES ('$  URL', '$  UserID')";            if (mysqli_query($  sql)) {         echo "New record created successfully !";      } else {         echo "Error: " . $  sql . " " . mysqli_error($  sql);      }      mysqli_close($  sql); } 

Feedback Error reads: Error: INSERT INTO users (test, UserID) VALUES (‘theusersfavorurl’, ”)

thank you !

Merge output of two different subqueries into onto one in postgresql

I have two different queries which provide me the XML response as output. I want to merge the output of both queries into one single response. Below are the queries whose responses I want to be merged in postgresql.

Query 1: SELECT xmlforest(xmlforest(‘PPP Program’ AS promotionProgramName, coalesce(t.rus_id, 0) AS shipToId, CASE WHEN t.C_2021_PPP_PARA IS NOT NULL OR t.c_2021_ppp_vaccine = ‘2021 PPP Vaccine’ THEN ‘Enrolled’ ELSE ‘Not-Enrolled’ END AS participationStatus, ” AS participationStatusUpdateDate, xmlforest(‘2021_PPP_Parasiticide_Program’ AS "name", CASE WHEN t.C_2021_PPP_PARA IS NOT NULL THEN ‘True’ ELSE ‘False’ END AS requirementsMet, coalesce(t.YTD_2021_Qualifying_Carton_Purchased, 0) AS qualifyingPurchaseAmount, ‘Carton’ AS qualifyingPurchaseAmountType, CASE WHEN t.C_2021_PPP_PARA IS NOT NULL THEN ‘Active’ ELSE ‘In-Active’ END AS componentLevels, xmlforest(‘q1_parasiticide_carton_rebate’ AS "rewardName", CASE WHEN q1_parasiticide_carton_rebate IS NULL THEN CAST(0 AS VARCHAR) ELSE cast(coalesce(q1_parasiticide_carton_rebate, 0) AS VARCHAR(10)) END AS rewardAmount) AS "componentRewards") AS "programComponents", xmlforest(‘2021_PPP_Vaccine_Program’ AS "name", CASE WHEN C_2021_PPP_VACCINE = ‘2021 PPP Vaccine’ THEN ‘True’ ELSE ‘False’ END AS requirementsMet, coalesce(t.ytd_vaccine_sales, 0) AS qualifyingPurchaseAmount, ‘Dollar’ AS qualifyingPurchaseAmountType, CASE WHEN C_2021_PPP_VACCINE = ‘2021 PPP Vaccine’ THEN ‘Active’ ELSE ‘In-Active’ END AS componentStatus, xmlforest(‘CONTRACT_REQUIREMENT_Q1’ AS "name", coalesce(t.vaccine_requirement_q1, 0) AS targetAmount, CASE WHEN (coalesce(t.vaccine_requirement_q1, 0) – coalesce(t.vaccine_sales_q1, 0)) < 0 THEN 0 ELSE (coalesce(t.vaccine_requirement_q1, 0) – coalesce(t.vaccine_sales_q1, 0)) END AS achievedAmount) AS "componentLevels") AS "programComponents") AS "ProgramStatus") FROM temptable t LEFT JOIN ( SELECT * FROM view_programs_enrollment WHERE program_name LIKE ‘PPP%’ AND ( Participation_Start_Date IS NOT NULL OR participation_modify_date IS NOT NULL ) ORDER BY Participation_Start_Date DESC ,participation_modify_date DESC LIMIT 1 ) AS p ON t.rus_id = p.customer_location_id WHERE t.rus_id = ‘70192’;

Query-1 Output: PPP Program 70192 Enrolled 2021_PPP_Parasiticide_Program True 10 Carton Active q1_parasiticide_carton_rebate 6258777.90 2021_PPP_Vaccine_Program True 6608.6000000000 Dollar Active CONTRACT_REQUIREMENT_Q1 3750 0

Query-2: SELECT xmlforest(xmlforest(promotionProgramName, coalesce(cast(shiptoid AS VARCHAR), ”) AS shipToId, coalesce(Participation_Status, p.Participation_Status, ‘In-Active’) AS participationStatus, CAST(coalesce(p.participation_modify_date, p.Participation_Start_Date, NULL) AS DATE) AS participationStatusUpdateDate, xmlforest(‘Advance 2021 program’ AS name, CASE WHEN Participation_Status = ‘Enrolled’ THEN ‘True’ ELSE ‘False’ END AS requirementsMet, coalesce(advanceytdamt, 0) AS qualifyingPurchaseAmount, ‘Dollar’ AS qualifyingPurchaseAmountType, coalesce(currentlevel, ‘Level0’) AS componentStatus, xmlforest(level1 AS name, coalesce(cast(level1taget AS INT), 0) AS targetAmount, coalesce(Level1TagetRemaining, 0) AS achievedAmount) AS componentLevels) AS programComponents) AS ProgramStatus) FROM view_programs_enrollment p JOIN adavncedata ON adavncedata.shiptoid = p.customer_location_id WHERE p.program_name LIKE (‘Advance%’) AND p.customer_location_id = ‘70192’;

Query-2 Output: Advance 70192 NOT-ENROLLED Advance 2021 program False 0 Dollar 0 7% Rebate 2500 0

Expected Output: <CustomerProgramStatus_response> PPP Program 70192 Enrolled 2021_PPP_Parasiticide_Program True 10 Carton Active q1_parasiticide_carton_rebate 6258777.90 2021_PPP_Vaccine_Program True 6608.6000000000 Dollar Active CONTRACT_REQUIREMENT_Q1 3750 0 Advance 70192 NOT-ENROLLED Advance 2021 program False 0 Dollar 0 7% Rebate 2500 0 </CustomerProgramStatus_response>

Can Anyone help me with this?