Heather Ryan chanting, “Go back to Florida, pudding fingers!” Image: Twitter video screenshot
Subscribe for Updates!
Join our mailing list to receive the latest news and updates from our team.
You have Successfully Subscribed!
Tired of “playing nice,” Heather Ryan founded Bitches Get Stuff Done after Roe was overturned. She interrupted Ron DeSantis as he campaigned in Iowa over the weekend, and she wants to train more women to do the same.
Early Friday morning, Heather Ryan and her niece got in the car and drove for about an hour to Menlo, Iowa. Their destination was a rock painted by Republican state lawmaker Ray “Bubba” Sorensen as part of a project to create “Freedom Rocks” that honor veterans in all of Iowa’s 99 counties.
Ryan had gotten a tip the night before on TikTok that GOP presidential candidate and current Florida Gov. Ron DeSantis would visit the Menlo rock to kick off a swing through the state that will hold the first Republican nominating contest early next year. DeSantis’ Iowa swing also included a trip to the state fair, where presidential candidates gather for their 20-minute turn on the “soapbox” hosted by the Des Moines Register and often find time to flip a pork chop or pose for photos in front of the famed butter cow.
“I thought, I’m on this like Donkey Kong,” Ryan told The 19th in an interview.
Ryan, a 51-year-old Navy veteran, founded the organization Bitches Get Stuff Done last summer shortly after the Supreme Court overturned Roe v. Wade and ended the federal right to abortion. It’s thus far been a largely family affair: Ryan’s daughter and niece round out the group’s leadership. But Ryan said she filed the paperwork to become a registered political action committee in Iowa last week, and the group has a series of activist trainings planned around the state this summer, starting in Des Moines this weekend. Ryan hopes to encourage others to use a more brash style of activism that she embraced at the rock, and again the next day when she disrupted a DeSantis appearance at the fair.
Ryan has engaged in political activism since childhood, and as resident of a perpetual presidential proving ground, she’s had plenty of opportunities to call on state and national candidates alike to address gun violence, combat climate change and protect reproductive rights. While Ryan knew that Roe was under assault, she expected it to be “death by a thousand cuts, I didn’t expect it to go all at once.” Then the Dobbs decision landed.
“It really hit me. That’s when I started my TikTok account, that’s when I realized we’re playing nice, and nice isn’t getting us shit, it isn’t getting the job done,” she said.
Gov. Kim Reynolds, a Republican, leads the state, and her party controls both chambers of Iowa’s legislature. Ryan knows that it will be an uphill battle to get progressive policies enacted. But Republican candidates’ frequent Iowa visits create an opening for Ryan and her group until the legislature reconvenes early next year. “We have from now until the caucuses to mess with Republicans. Our state politics are so messed up because all we do is cater to presidential politics,” she said.
Ryan and her niece, Kara Ryan, woke up early on Friday to make sure they’d be there ahead of DeSantis’ planned 8:30 a.m. arrival to protest the Florida governor’s policies related to gender and LGBTQ+ inclusivity in schools. DeSantis is banking on success in Iowa to bolster his floundering position in national polls of the Republican primary field, where he trails former President Donald Trump by a significant margin. Iowa polls show DeSantis in a slightly stronger position.
“Go back to Florida, pudding fingers!” Heather Ryan shouted via a bullhorn as DeSantis and his wife, Casey DeSantis, exited the campaign bus. Her niece, Kara Ryan, shook a cowbell and recorded the scene on her mobile phone. “Racist, fascist, anti-gay—Ron DeSantis go away!”
Earlier this year, The Daily Beast published a story that said DeSantis eats pudding with three fingers instead of a spoon. MAGA Inc., a political super PAC started by allies of Trump, quickly cut an ad titled “Pudding Fingers,” saying DeSantis would cut spending on seniors. In it, a man in a business suit whose face is mostly offscreen dips three fingers into a container of pudding and sucks the dessert off of his fingers. “Ron DeSantis loves sticking his fingers where they don’t belong,” a narrator intones.
DeSantis tried to speak to the small group gathered at the rock but it was difficult, if not impossible, to hear him over Ryan’s chants, according to multiple videos reviewed by The 19th. A DeSantis supporter got in Ryan’s face and tried to push the bullhorn from her hands. The campaign stop was brief.
Politico reported that “two protestors effectively cut short the Florida governor’s first campaign stop of the day at a large roadside rock” with their chants and cowbell.
“People like that,” the news organization quoted DeSantis saying, “are what’s holding the country back.” The 19th could not immediately reach the DeSantis campaign for comment.
The next day, Ryan and her adult daughter, Heaven Chamberlain, brought whistles and more fellow activists to the Iowa State Fair for Reynolds’ “Fair-Side Chat” series with DeSantis. Ryan decided to focus on DeSantis because she sees him as the “most active fascist” challenger to Trump.
“Kim Reynolds did ask us to be ‘Iowa nice’ and stop blowing our whistles, but we decided to be bitches,” Ryan narrates in her TikTok dispatch. Like with most everything in politics today, a partisan divide exists over whether “Iowa nice” still applies—70 percent of Iowan Republicans said yes but just 51 percent of the state’s Democrats agreed, according to a 2021 Des Moines Register poll. Ryan said she was cited by the police for trespassing. Her TikTok account got 10,000 new followers in two days.
Ryan was inspired to name her fledgling organization Bitches Get Stuff Done by Democratic Rep. Alexandria Ocasio-Cortez’s response when former Republican Rep. Ted Yoho in 2020 called her a “bitch” on the steps of the Capitol. “Believe it or not, I usually get along fine w/ my GOP colleagues. We know how to check our legislative sparring at the committee door. But hey, “b*tches” get stuff done,” Ocasio-Cortez wrote on the social media platform then known as Twitter. She, in turn, was quoting a now-famous “Saturday Night Live” skit with Tina Fey and Amy Poehler.
Ryan said she has no problem with being described as “foul-mouthed.” When she ran unsuccessfully for a U.S. House seat back in 2017, consultants told her she needed to “clean up her look and stop swearing.” She didn’t. Now, she wants to bring that energy to GOP political events around the state—she protested at Sorensen’s house right before state lawmakers held a special session to enact a bill banning most abortions after six weeks of pregnancy.
She envisions the series of trainings that will be held by Bitches Get Stuff Done as a way for others to develop the fortitude to participate in this style of in-your-face activism. She also plans to draw from her past experience working in reality television to show how activists can use social media to gain an audience. One of her unlikely inspirations? Trump’s own journey as reality star-turned-politician.
“You create an enemy, start a fight, then leave a cliffhanger—that is what Donald Trump does, there is a formula to it. I want people to use it, to be more effective in protesting,” Ryan said.
The 19th News
A century ago, the 19th Amendment to the U.S. Constitution made voting, our country’s most fundamental mode of civic participation, a right regardless of gender. But this watershed moment in our democracy excluded millions of women, particularly women of color, from the ballot box for generations. And the reality is suffrage remains a work in progress for many in this country, particularly people living in states where voter suppression exists and tens of thousands of transgender Americans who face barriers to voting.
{"id":null,"mode":"form","open_style":"in_place","currency_code":"USD","currency_symbol":"$","currency_type":"decimal","blank_flag_url":"https:\/\/factkeepers.com\/wp-content\/plugins\/tip-jar-wp\/\/assets\/images\/flags\/blank.gif","flag_sprite_url":"https:\/\/factkeepers.com\/wp-content\/plugins\/tip-jar-wp\/\/assets\/images\/flags\/flags.png","default_amount":500,"top_media_type":"none","featured_image_url":false,"featured_embed":"","header_media":null,"file_download_attachment_data":null,"recurring_options_enabled":true,"recurring_options":{"never":{"selected":true,"after_output":"One time only"},"weekly":{"selected":false,"after_output":"Every week"},"monthly":{"selected":false,"after_output":"Every month"},"yearly":{"selected":false,"after_output":"Every year"}},"strings":{"current_user_email":"","current_user_name":"","link_text":"Leave a tip","complete_payment_button_error_text":"Check info and try again","payment_verb":"Pay","payment_request_label":"Factkeepers.com","form_has_an_error":"Please check and fix the errors above","general_server_error":"Something isn't working right at the moment. Please try again.","form_title":"Help Support Factkeepers","form_subtitle":null,"currency_search_text":"Country or Currency here","other_payment_option":"Other payment option","manage_payments_button_text":"Manage your payments","thank_you_message":"Thank you for being a supporter!","payment_confirmation_title":"Factkeepers.com","receipt_title":"Your Receipt","print_receipt":"Print Receipt","email_receipt":"Email Receipt","email_receipt_sending":"Sending receipt...","email_receipt_success":"Email receipt successfully sent","email_receipt_failed":"Email receipt failed to send. Please try again.","receipt_payee":"Paid to","receipt_statement_descriptor":"This will show up on your statement as","receipt_date":"Date","receipt_transaction_id":"Transaction ID","receipt_transaction_amount":"Amount","refund_payer":"Refund from","login":"Log in to manage your payments","manage_payments":"Manage Payments","transactions_title":"Your Transactions","transaction_title":"Transaction Receipt","transaction_period":"Plan Period","arrangements_title":"Your Plans","arrangement_title":"Manage Plan","arrangement_details":"Plan Details","arrangement_id_title":"Plan ID","arrangement_payment_method_title":"Payment Method","arrangement_amount_title":"Plan Amount","arrangement_renewal_title":"Next renewal date","arrangement_action_cancel":"Cancel Plan","arrangement_action_cant_cancel":"Cancelling is currently not available.","arrangement_action_cancel_double":"Are you sure you'd like to cancel?","arrangement_cancelling":"Cancelling Plan...","arrangement_cancelled":"Plan Cancelled","arrangement_failed_to_cancel":"Failed to cancel plan","back_to_plans":"\u2190 Back to Plans","update_payment_method_verb":"Update","sca_auth_description":"Your have a pending renewal payment which requires authorization.","sca_auth_verb":"Authorize renewal payment","sca_authing_verb":"Authorizing payment","sca_authed_verb":"Payment successfully authorized!","sca_auth_failed":"Unable to authorize! Please try again.","login_button_text":"Log in","login_form_has_an_error":"Please check and fix the errors above","uppercase_search":"Search","lowercase_search":"search","uppercase_page":"Page","lowercase_page":"page","uppercase_items":"Items","lowercase_items":"items","uppercase_per":"Per","lowercase_per":"per","uppercase_of":"Of","lowercase_of":"of","back":"Back to plans","zip_code_placeholder":"Zip\/Postal Code","download_file_button_text":"Download File","input_field_instructions":{"tip_amount":{"placeholder_text":"How much would you like to donate? You can change this amount to anything you would like.","initial":{"instruction_type":"normal","instruction_message":"How much would you like to donate? You can change this amount to anything you would like."},"empty":{"instruction_type":"error","instruction_message":"How much would you like to donate? You can change this amount to anything you would like."},"invalid_curency":{"instruction_type":"error","instruction_message":"How much would you like to donate? You can change this amount to anything you would like."}},"recurring":{"placeholder_text":"Recurring","initial":{"instruction_type":"normal","instruction_message":"How often would you like to donate this?"},"success":{"instruction_type":"success","instruction_message":"How often would you like to donate this?"},"empty":{"instruction_type":"error","instruction_message":"How often would you like to donate this?"}},"name":{"placeholder_text":"Name on Credit Card","initial":{"instruction_type":"normal","instruction_message":"Enter the name on your card."},"success":{"instruction_type":"success","instruction_message":"Enter the name on your card."},"empty":{"instruction_type":"error","instruction_message":"Please enter the name on your card."}},"privacy_policy":{"terms_title":"Terms and conditions","terms_body":null,"terms_show_text":"View Terms","terms_hide_text":"Hide Terms","initial":{"instruction_type":"normal","instruction_message":"I agree to the terms."},"unchecked":{"instruction_type":"error","instruction_message":"Please agree to the terms."},"checked":{"instruction_type":"success","instruction_message":"I agree to the terms."}},"email":{"placeholder_text":"Your email address","initial":{"instruction_type":"normal","instruction_message":"Enter your email address"},"success":{"instruction_type":"success","instruction_message":"Enter your email address"},"blank":{"instruction_type":"error","instruction_message":"Enter your email address"},"not_an_email_address":{"instruction_type":"error","instruction_message":"Make sure you have entered a valid email address"}},"note_with_tip":{"placeholder_text":"Your note here...","initial":{"instruction_type":"normal","instruction_message":"Attach a note to your tip (optional)"},"empty":{"instruction_type":"normal","instruction_message":"Attach a note to your tip (optional)"},"not_empty_initial":{"instruction_type":"normal","instruction_message":"Attach a note to your tip (optional)"},"saving":{"instruction_type":"normal","instruction_message":"Saving note..."},"success":{"instruction_type":"success","instruction_message":"Note successfully saved!"},"error":{"instruction_type":"error","instruction_message":"Unable to save note note at this time. Please try again."}},"email_for_login_code":{"placeholder_text":"Your email address","initial":{"instruction_type":"normal","instruction_message":"Enter your email to log in."},"success":{"instruction_type":"success","instruction_message":"Enter your email to log in."},"blank":{"instruction_type":"error","instruction_message":"Enter your email to log in."},"empty":{"instruction_type":"error","instruction_message":"Enter your email to log in."}},"login_code":{"initial":{"instruction_type":"normal","instruction_message":"Check your email and enter the login code."},"success":{"instruction_type":"success","instruction_message":"Check your email and enter the login code."},"blank":{"instruction_type":"error","instruction_message":"Check your email and enter the login code."},"empty":{"instruction_type":"error","instruction_message":"Check your email and enter the login code."}},"stripe_all_in_one":{"initial":{"instruction_type":"normal","instruction_message":"Enter your credit card details here."},"empty":{"instruction_type":"error","instruction_message":"Enter your credit card details here."},"success":{"instruction_type":"normal","instruction_message":"Enter your credit card details here."},"invalid_number":{"instruction_type":"error","instruction_message":"The card number is not a valid credit card number."},"invalid_expiry_month":{"instruction_type":"error","instruction_message":"The card's expiration month is invalid."},"invalid_expiry_year":{"instruction_type":"error","instruction_message":"The card's expiration year is invalid."},"invalid_cvc":{"instruction_type":"error","instruction_message":"The card's security code is invalid."},"incorrect_number":{"instruction_type":"error","instruction_message":"The card number is incorrect."},"incomplete_number":{"instruction_type":"error","instruction_message":"The card number is incomplete."},"incomplete_cvc":{"instruction_type":"error","instruction_message":"The card's security code is incomplete."},"incomplete_expiry":{"instruction_type":"error","instruction_message":"The card's expiration date is incomplete."},"incomplete_zip":{"instruction_type":"error","instruction_message":"The card's zip code is incomplete."},"expired_card":{"instruction_type":"error","instruction_message":"The card has expired."},"incorrect_cvc":{"instruction_type":"error","instruction_message":"The card's security code is incorrect."},"incorrect_zip":{"instruction_type":"error","instruction_message":"The card's zip code failed validation."},"invalid_expiry_year_past":{"instruction_type":"error","instruction_message":"The card's expiration year is in the past"},"card_declined":{"instruction_type":"error","instruction_message":"The card was declined."},"missing":{"instruction_type":"error","instruction_message":"There is no card on a customer that is being charged."},"processing_error":{"instruction_type":"error","instruction_message":"An error occurred while processing the card."},"invalid_request_error":{"instruction_type":"error","instruction_message":"Unable to process this payment, please try again or use alternative method."},"invalid_sofort_country":{"instruction_type":"error","instruction_message":"The billing country is not accepted by SOFORT. Please try another country."}}}},"fetched_oembed_html":false}