Deprecated: Return type of FS_Key_Value_Storage::offsetExists($k) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home1/citynews/public_html/news/wp-content/plugins/automatic-youtube-gallery/freemius/includes/managers/class-fs-key-value-storage.php on line 309

Deprecated: Return type of FS_Key_Value_Storage::offsetGet($k) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home1/citynews/public_html/news/wp-content/plugins/automatic-youtube-gallery/freemius/includes/managers/class-fs-key-value-storage.php on line 317

Deprecated: Return type of FS_Key_Value_Storage::offsetSet($k, $v) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home1/citynews/public_html/news/wp-content/plugins/automatic-youtube-gallery/freemius/includes/managers/class-fs-key-value-storage.php on line 301

Deprecated: Return type of FS_Key_Value_Storage::offsetUnset($k) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home1/citynews/public_html/news/wp-content/plugins/automatic-youtube-gallery/freemius/includes/managers/class-fs-key-value-storage.php on line 313

Deprecated: Return type of FS_Key_Value_Storage::current() should either be compatible with Iterator::current(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home1/citynews/public_html/news/wp-content/plugins/automatic-youtube-gallery/freemius/includes/managers/class-fs-key-value-storage.php on line 328

Deprecated: Return type of FS_Key_Value_Storage::next() should either be compatible with Iterator::next(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home1/citynews/public_html/news/wp-content/plugins/automatic-youtube-gallery/freemius/includes/managers/class-fs-key-value-storage.php on line 339

Deprecated: Return type of FS_Key_Value_Storage::key() should either be compatible with Iterator::key(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home1/citynews/public_html/news/wp-content/plugins/automatic-youtube-gallery/freemius/includes/managers/class-fs-key-value-storage.php on line 350

Deprecated: Return type of FS_Key_Value_Storage::valid() should either be compatible with Iterator::valid(): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home1/citynews/public_html/news/wp-content/plugins/automatic-youtube-gallery/freemius/includes/managers/class-fs-key-value-storage.php on line 362

Deprecated: Return type of FS_Key_Value_Storage::rewind() should either be compatible with Iterator::rewind(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home1/citynews/public_html/news/wp-content/plugins/automatic-youtube-gallery/freemius/includes/managers/class-fs-key-value-storage.php on line 375

Deprecated: Return type of FS_Key_Value_Storage::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home1/citynews/public_html/news/wp-content/plugins/automatic-youtube-gallery/freemius/includes/managers/class-fs-key-value-storage.php on line 389

Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the amp domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home1/citynews/public_html/news/wp-includes/functions.php on line 6131

Notice: Function amp_is_available was called incorrectly. `amp_is_available()` (or `amp_is_request()`, formerly `is_amp_endpoint()`) was called too early and so it will not work properly. WordPress is not currently doing any hook. Calling this function before the `wp` action means it will not have access to `WP_Query` and the queried object to determine if it is an AMP response, thus neither the `amp_skip_post()` filter nor the AMP enabled toggle will be considered. The function was called too early (before the plugins_loaded action) to determine the plugin source. Please see Debugging in WordPress for more information. (This message was added in version 2.0.0.) in /home1/citynews/public_html/news/wp-includes/functions.php on line 6131

Notice: Function amp_is_available was called incorrectly. `amp_is_available()` (or `amp_is_request()`, formerly `is_amp_endpoint()`) was called too early and so it will not work properly. WordPress is not currently doing any hook. Calling this function before the `wp` action means it will not have access to `WP_Query` and the queried object to determine if it is an AMP response, thus neither the `amp_skip_post()` filter nor the AMP enabled toggle will be considered. The function was called too early (before the plugins_loaded action) to determine the plugin source. Please see Debugging in WordPress for more information. (This message was added in version 2.0.0.) in /home1/citynews/public_html/news/wp-includes/functions.php on line 6131

Notice: Function amp_is_available was called incorrectly. `amp_is_available()` (or `amp_is_request()`, formerly `is_amp_endpoint()`) was called too early and so it will not work properly. WordPress is currently doing the `plugins_loaded` hook. Calling this function before the `wp` action means it will not have access to `WP_Query` and the queried object to determine if it is an AMP response, thus neither the `amp_skip_post()` filter nor the AMP enabled toggle will be considered. The function was called too early (before the plugins_loaded action) to determine the plugin source. Please see Debugging in WordPress for more information. (This message was added in version 2.0.0.) in /home1/citynews/public_html/news/wp-includes/functions.php on line 6131

Notice: Function amp_is_available was called incorrectly. `amp_is_available()` (or `amp_is_request()`, formerly `is_amp_endpoint()`) was called too early and so it will not work properly. WordPress is currently doing the `plugins_loaded` hook. Calling this function before the `wp` action means it will not have access to `WP_Query` and the queried object to determine if it is an AMP response, thus neither the `amp_skip_post()` filter nor the AMP enabled toggle will be considered. The function was called too early (before the plugins_loaded action) to determine the plugin source. Please see Debugging in WordPress for more information. (This message was added in version 2.0.0.) in /home1/citynews/public_html/news/wp-includes/functions.php on line 6131

Deprecated: Creation of dynamic property OptimizeDatabase::$odb_logfile_debug_path is deprecated in /home1/citynews/public_html/news/wp-content/plugins/rvg-optimize-database/rvg-optimize-database.php on line 201

Warning: Cannot modify header information - headers already sent by (output started at /home1/citynews/public_html/news/wp-content/plugins/automatic-youtube-gallery/freemius/includes/managers/class-fs-key-value-storage.php:44) in /home1/citynews/public_html/news/wp-includes/rest-api/class-wp-rest-server.php on line 1909

Warning: Cannot modify header information - headers already sent by (output started at /home1/citynews/public_html/news/wp-content/plugins/automatic-youtube-gallery/freemius/includes/managers/class-fs-key-value-storage.php:44) in /home1/citynews/public_html/news/wp-includes/rest-api/class-wp-rest-server.php on line 1909

Warning: Cannot modify header information - headers already sent by (output started at /home1/citynews/public_html/news/wp-content/plugins/automatic-youtube-gallery/freemius/includes/managers/class-fs-key-value-storage.php:44) in /home1/citynews/public_html/news/wp-includes/rest-api/class-wp-rest-server.php on line 1909

Warning: Cannot modify header information - headers already sent by (output started at /home1/citynews/public_html/news/wp-content/plugins/automatic-youtube-gallery/freemius/includes/managers/class-fs-key-value-storage.php:44) in /home1/citynews/public_html/news/wp-includes/rest-api/class-wp-rest-server.php on line 1909

Warning: Cannot modify header information - headers already sent by (output started at /home1/citynews/public_html/news/wp-content/plugins/automatic-youtube-gallery/freemius/includes/managers/class-fs-key-value-storage.php:44) in /home1/citynews/public_html/news/wp-includes/rest-api/class-wp-rest-server.php on line 1909

Warning: Cannot modify header information - headers already sent by (output started at /home1/citynews/public_html/news/wp-content/plugins/automatic-youtube-gallery/freemius/includes/managers/class-fs-key-value-storage.php:44) in /home1/citynews/public_html/news/wp-includes/rest-api/class-wp-rest-server.php on line 1909

Warning: Cannot modify header information - headers already sent by (output started at /home1/citynews/public_html/news/wp-content/plugins/automatic-youtube-gallery/freemius/includes/managers/class-fs-key-value-storage.php:44) in /home1/citynews/public_html/news/wp-includes/rest-api/class-wp-rest-server.php on line 1909

Warning: Cannot modify header information - headers already sent by (output started at /home1/citynews/public_html/news/wp-content/plugins/automatic-youtube-gallery/freemius/includes/managers/class-fs-key-value-storage.php:44) in /home1/citynews/public_html/news/wp-includes/rest-api/class-wp-rest-server.php on line 1909
{"id":130115,"date":"2026-08-18T15:40:05","date_gmt":"2026-08-18T19:40:05","guid":{"rendered":"https:\/\/reason.com\/?p=8397923"},"modified":"2026-08-18T15:40:05","modified_gmt":"2026-08-18T19:40:05","slug":"san-franciscos-historic-laundromat-project-finally-begins-construction","status":"publish","type":"post","link":"http:\/\/3rdcitynews.com\/news\/san-franciscos-historic-laundromat-project-finally-begins-construction\/","title":{"rendered":"San Francisco’s ‘Historic Laundromat’ Project Finally Begins Construction"},"content":{"rendered":"\n
\"Laundromat <\/picture> <\/div>\n

Happy Tuesday, and welcome to another edition of <\/span>Rent Free<\/span><\/i>. This week, we take a look at the final chapter in the long-running development battle over San Francisco’s “historic laundromat.”<\/span><\/p>\n


\n

‘Historic Laundromat’ Project Finally Begins Construction<\/b><\/h1>\n

When I first interviewed Robert Tillman about his effort to convert his laundromat in San Francisco’s Mission District into a 75-unit apartment building in 2018, <\/span>he quipped that<\/span><\/a> “i<\/span>t’s taken me longer to get to this point than it took for the United States to win World War II.”<\/span><\/p>\n

At that point, he’d already spent four years in the entitlement process and close to $1 million on predevelopment costs.<\/span><\/p>\n

<\/code><\/p>\n

Eight years on from that interview, and 12 years since Tillman initially proposed apartments on the site, the 75-unit project is finally beginning construction.<\/span><\/p>\n

\n

Observed on my afternoon run: construction is underway at the site of the Mission District's "Tillman laundromat." <\/p>\n

The owner was a crank who said he'd sue the city rather than accede to "the groups," back at the dawn of the YIMBY era.<\/p>\n

1\/5 pic.twitter.com\/T0oivu3YuB<\/a><\/p>\n

— Chris Elmendorf (@CSElmendorf) August 13, 2026<\/a><\/p>\n<\/blockquote>\n