reason.com
Open in
urlscan Pro
75.2.24.81
Public Scan
URL:
https://reason.com/2024/01/29/california-stopped-san-franciscos-1-7-million-toilet-the-city-cant-build-something-ch...
Submission: On February 13 via manual from US — Scanned from US
Submission: On February 13 via manual from US — Scanned from US
Form analysis
3 forms found in the DOMGET https://reason.com/
<form role="search" method="get" class="search-form" action="https://reason.com/">
<label>
<span class="screen-reader-text">Search for:</span>
<input type="search" class="search-field" placeholder="Search …" value="" name="s">
</label>
<input type="submit" class="search-submit" value="Search">
</form>
POST
<form method="post" id="gform_0" class="recaptcha-v3-initialized"><input type="hidden" name="login_redirect" value="/2024/01/29/california-stopped-san-franciscos-1-7-million-toilet-the-city-cant-build-something-cheaper/">
<div class="gform_heading">
<h3 class="gform_title">Login Form</h3>
</div>
<div class="gform_body">
<div id="gform_fields_login" class="gform_fields top_label">
<div id="field_0_1" class="gfield gfield--type-text gfield_contains_required field_sublabel_below gfield--no-description field_description_below gfield_visibility_visible" data-js-reload="field_0_1"><label class="gfield_label gform-field-label"
for="input_1">Username<span class="gfield_required"><span class="gfield_required gfield_required_text">(Required)</span></span></label>
<div class="ginput_container ginput_container_text"><input name="input_1" id="input_1" type="text" value="" class="" aria-required="true" aria-invalid="false"> </div>
</div>
<div id="field_0_2" class="gfield gfield--type-text gfield_contains_required field_sublabel_below gfield--no-description field_description_below gfield_visibility_visible" data-js-reload="field_0_2"><label class="gfield_label gform-field-label"
for="input_2">Password<span class="gfield_required"><span class="gfield_required gfield_required_text">(Required)</span></span></label>
<div class="ginput_container ginput_container_text"><input name="input_2" id="input_2" type="password" value="" class="" aria-required="true" aria-invalid="false"> </div>
</div>
<div id="field_0_3" class="gfield gfield--type-remember_me field_sublabel_below gfield--no-description field_description_below hidden_label gfield_visibility_visible" data-js-reload="field_0_3"><label
class="gfield_label gform-field-label screen-reader-text gfield_label_before_complex"></label>
<div class="ginput_container ginput_container_checkbox">
<div class="gfield_checkbox" id="input_3">
<div class="gchoice gchoice_3">
<input class="gfield-choice-input" name="input_3.1" type="checkbox" value="1" id="choice_3">
<label for="choice_3" id="label_3">Remember Me</label>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="gform_footer top_label"> <button type="submit" id="gform_submit_button_0" class="gform_button button"
onclick="if(window["gf_submitting_0"]){return false;} if( !jQuery("#gform_0")[0].checkValidity || jQuery("#gform_0")[0].checkValidity()){window["gf_submitting_0"]=true;} "
onkeypress="if( event.keyCode == 13 ){ if(window["gf_submitting_0"]){return false;} if( !jQuery("#gform_0")[0].checkValidity || jQuery("#gform_0")[0].checkValidity()){window["gf_submitting_0"]=true;} jQuery("#gform_0").trigger("submit",[true]); }">Login</button>
<input type="hidden" class="gform_hidden" name="is_submit_0" value="1">
<input type="hidden" class="gform_hidden" name="gform_submit" value="0">
<input type="hidden" class="gform_hidden" name="gform_unique_id" value="">
<input type="hidden" class="gform_hidden" name="state_0" value="WyJbXSIsIjVmZDk0MDRiMTc0NTYwODJmYTIwNGZlZDYxN2ViYzJjIl0=">
<input type="hidden" class="gform_hidden" name="gform_target_page_number_0" id="gform_target_page_number_0" value="0">
<input type="hidden" class="gform_hidden" name="gform_source_page_number_0" id="gform_source_page_number_0" value="1">
<input type="hidden" name="gform_field_values" value="">
</div>
</form>
POST /2024/01/29/california-stopped-san-franciscos-1-7-million-toilet-the-city-cant-build-something-cheaper/#gf_17
<form method="post" enctype="multipart/form-data" target="gform_ajax_frame_17" id="gform_17" class="puprf-signup-widget recaptcha-v3-initialized"
action="/2024/01/29/california-stopped-san-franciscos-1-7-million-toilet-the-city-cant-build-something-cheaper/#gf_17" data-formid="17" novalidate="">
<div class="gf_invisible ginput_recaptchav3" data-sitekey="6LeMnkUaAAAAALL8T1-XAyB7vxpOeTExu6KwR48-" data-tabindex="0"><input id="input_9ae663dc72ef42b46f2cf3a53ec042e1" class="gfield_recaptcha_response" type="hidden"
name="input_9ae663dc72ef42b46f2cf3a53ec042e1" value=""></div>
<div class="gform-body gform_body">
<div id="gform_fields_17" class="gform_fields top_label form_sublabel_below description_below">
<div id="field_17_1" class="gfield gfield--type-email gfield_contains_required field_sublabel_below gfield--no-description field_description_below hidden_label gfield_visibility_visible" data-js-reload="field_17_1"><label
class="gfield_label gform-field-label" for="input_17_1">Email<span class="gfield_required"><span class="gfield_required gfield_required_text">(Required)</span></span></label>
<div class="ginput_container ginput_container_email">
<input name="input_1" id="input_17_1" type="email" value="" class="large" placeholder="Email Address" aria-required="true" aria-invalid="false">
</div>
</div>
<div id="field_17_2" class="gfield gfield--type-honeypot gform_validation_container field_sublabel_below gfield--has-description field_description_below gfield_visibility_visible" data-js-reload="field_17_2"><label
class="gfield_label gform-field-label" for="input_17_2">Email</label>
<div class="ginput_container"><input name="input_2" id="input_17_2" type="text" value="" autocomplete="new-password"></div>
<div class="gfield_description" id="gfield_description_17_2">This field is for validation purposes and should be left unchanged.</div>
</div>
</div>
</div>
<div class="gform_footer top_label"> <button type="submit" id="gform_submit_button_17" class="gform_button button"
onclick="if(window["gf_submitting_17"]){return false;} if( !jQuery("#gform_17")[0].checkValidity || jQuery("#gform_17")[0].checkValidity()){window["gf_submitting_17"]=true;} "
onkeypress="if( event.keyCode == 13 ){ if(window["gf_submitting_17"]){return false;} if( !jQuery("#gform_17")[0].checkValidity || jQuery("#gform_17")[0].checkValidity()){window["gf_submitting_17"]=true;} jQuery("#gform_17").trigger("submit",[true]); }">Submit</button>
<input type="hidden" name="gform_ajax" value="form_id=17&title=&description=1&tabindex=0&theme=data-form-theme='gravity-theme'">
<input type="hidden" class="gform_hidden" name="is_submit_17" value="1">
<input type="hidden" class="gform_hidden" name="gform_submit" value="17">
<input type="hidden" class="gform_hidden" name="gform_unique_id" value="">
<input type="hidden" class="gform_hidden" name="state_17" value="WyJbXSIsIjVmZDk0MDRiMTc0NTYwODJmYTIwNGZlZDYxN2ViYzJjIl0=">
<input type="hidden" class="gform_hidden" name="gform_target_page_number_17" id="gform_target_page_number_17" value="0">
<input type="hidden" class="gform_hidden" name="gform_source_page_number_17" id="gform_source_page_number_17" value="1">
<input type="hidden" name="gform_field_values" value="">
</div>
<p style="display: none !important;" class="akismet-fields-container" data-prefix="ak_"><label>Δ<textarea name="ak_hp_textarea" cols="45" rows="8" maxlength="100"></textarea></label><input type="hidden" id="ak_js_1" name="ak_js"
value="1707797000680">
<script>
document.getElementById("ak_js_1").setAttribute("value", (new Date()).getTime());
</script>
</p>
</form>
Text Content
* Latest * Magazine * Current Issue * Archives * Subscribe * Crossword * Video * Podcasts * All Shows * The Reason Roundtable * The Reason Interview With Nick Gillespie * The Soho Forum Debates * Just Asking Questions * The Best of Reason Magazine * Why We Can't Have Nice Things * Volokh * Newsletters * Donate * Donate Online * Donate Crypto * Ways To Give To Reason Foundation * Torchbearer Society * Planned Giving * Subscribe * Print/Digital Subscriptions * Gift Subscriptions Search for: LOGIN FORM Username(Required) Password(Required) Remember Me Login Create new account Forgot password Government Waste CALIFORNIA STOPPED SAN FRANCISCO'S $1.7 MILLION TOILET. THE CITY CAN'T BUILD SOMETHING CHEAPER. "WHY ISN'T THERE A TOILET HERE? I JUST DON'T GET IT. NOBODY DOES," ONE RESIDENT TOLD THE NEW YORK TIMES LAST WEEK. "IT'S YET ANOTHER EXAMPLE OF THE CITY THAT CAN'T." Emma Camp | 1.29.2024 3:49 PM Share on FacebookShare on TwitterShare on RedditShare by emailPrint friendly versionCopy page URL Media Contact & Reprint Requests (Illustration: Lex Villena) In October 2022, San Francisco raised eyebrows when the city budgeted $1.7 million for a single-stall public restroom in the city's Noe Valley neighborhood. The high price tag, according to city officials, was due to the steep price of construction in San Francisco, as well as remaining supply chain issues. But the state stepped in shortly after, scrapping the planned bathroom after outrage spread over its high cost to taxpayers. Fifteen months later, the public plaza where the restroom was originally planned still doesn't have a place to pee—and it doesn't look like it will get one any time soon. "Why isn't there a toilet here? I just don't get it. Nobody does," one resident told The New York Times last week. "It's yet another example of the city that can't." San Francisco has the most expensive construction costs in the world—and it's hardly surprising. In order to build a public bathroom in Noe Valley, at a location that already had the necessary plumbing to add a restroom, builders would have to pass a dizzying number of regulatory stops. These include seeking approval from the Arts Commission's Civic Design Review committee, passing review under the California Environmental Quality Act, and getting the go-ahead from the city's Rec and Park Commission and San Francisco's Board of Supervisors. If that isn't enough, the project would also be subject to a period of "community feedback." Powered By 00:00/01:30 10 Sec Biden meets with Jordan's King Abdullah II as pressure increases for Gaza deal Next Stay Even after gaining approval, the city wouldn't be free to simply find the cheapest acceptable bathroom—likely a pre-fabricated option—and connect it to city plumbing. According to a 2022 San Francisco Chronicle article, pre-fabricated bathrooms violate the city's Public Labor Agreement. Adding to costs, the city would also be required to use union labor to construct the bathroom. While the $1.7 million price tag was rightfully criticized, should the project have been allowed to go forward, the budget might not have been an overestimate. San Francisco's regulatory burden on new construction—even something as simple as a single-stall bathroom—is just that high. Even San Francisco's own government has conceded that the Noe Valley bathroom fiasco was a sign that the city has too much regulation. "It's worth changing the laws that are in place around construction projects like the restroom that slow things down," a spokesperson for Mayor London Breed told the Times. But this is far from the first time that local governments have earmarked absurdly large sums of money to pay for public bathrooms. In 2017, New York City spent $2 million on a public park bathroom. And last year, Philadelphia caused controversy when it announced that it would spend $1.8 million on six modular Portland Loo bathrooms over the next five years—a model that cities across the country have spent millions on in recent years. Start your day with Reason. Get a daily brief of the most important stories and trends every weekday morning when you subscribe to Reason Roundup. Email(Required) Email This field is for validation purposes and should be left unchanged. Submit Δ NEXT: iRobot Lays Off 350 Employees as Amazon Kills Merger Elizabeth Warren Opposed Emma Camp is an assistant editor at Reason. Government WasteCity SpendingGovernment SpendingSan FranciscoRegulationCitiesCaliforniaLocal GovernmentState GovernmentsLabor Unions Share on FacebookShare on TwitterShare on RedditShare by emailPrint friendly versionCopy page URL Media Contact & Reprint Requests Show Comments (61) LATEST SCOTUS IS TROUBLED BY THE CLAIM THAT STATES CAN DISQUALIFY TRUMP FROM THE ELECTION AS AN INSURRECTIONIST Jacob Sullum | 2.12.2024 1:35 PM PROTECT ACT COULD REQUIRE REMOVAL OF ALL EXISTING PORN ONLINE Elizabeth Nolan Brown | 2.12.2024 12:00 PM BIDEN'S BIZARRE 'SHRINKFLATION' NONSENSE Eric Boehm | 2.12.2024 11:15 AM DELINQUENT COUNTRIES Liz Wolfe | 2.12.2024 9:30 AM JOE BIDEN'S NO GOOD, VERY BAD DAY J.D. Tuccille | 2.12.2024 7:00 AM * About * Browse Topics * Events * Staff * Jobs * Donate * Advertise * Subscribe * Contact * Media * Shop * Amazon Reason FacebookReason TwitterReason InstagramReason TikTokReason YoutubeReason ItunesReason on FlipboardReason RSS © 2024 Reason Foundation | Accessibility | Privacy Policy | Terms Of Use This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply. Notifications