I believe that more people are hosting more backyard bonfires in Chicago in order to spend time with friends outdoors, because it’s one of the lowest risk ways to still enjoy life during the COVID-19 pandemic that Trump is prolonging.
The City of Chicago has rules on what can be burned. Be sensitive to neighbors who rely in keeping their windows open to cool and ventilate their homes.
The summary version is this: You can burn manufactured firewood that you purchased, and you can burn wood logs from any trees someone manually cut. All logs have to be untreated and two feet long or shorter.
You can’t burn scrap wood, lumber, plywood, or particle board. You also cannot burn garbage. Avoid having bonfires when the wind speed is 15 miles per hour or faster.
Read all the rules in this PDF. The rules aren’t in the municipal code; the code in section 11-4-740 says that the environment commissioner shall make rules (Chicago doesn’t currently have a department of environment).
Every now and then I’ll run the queries below to help me figure out ways to optimize the queries my application is using, and to figure out if certain tables and views (relations) need to be optimized.
/* Show the last time at which every table and view was vacuumed and analyzed */
SELECT relname, last_vacuum, last_autovacuum, last_analyze, last_autoanalyze
FROM pg_stat_all_tables d_d
WHERE schemaname = 'public';
/* See which queries are most popular */
SELECT * FROM pg_stat_statements where calls >=1000; /* replace 1000 with any integer, depending on how active your database is queried */
/* Kill a specific query */
select pg_terminate_backend(INTEGER); /* replace INTEGER with the process ID of a specific query */
/* Get the size of the database */
select pg_size_pretty(pg_database_size('DATABASE_NAME')); /* replace DATABASE_NAME with the name of your database */
/* Kill queries that are taking too long; replace DATABASE_NAME with the name of your database */
SELECT query, pg_terminate_backend(pid)
WHERE datname = 'DATABASE_NAME'
AND pid <> pg_backend_pid()
AND (state = 'active'
OR state = 'idle')
AND state_change < current_timestamp - INTERVAL '15' MINUTE; /* change 15 to any integer that you think means a query is taking too long */
/* See which queries are running */
select * from pg_stat_activity;
SELECT * FROM pg_stat_activity WHERE wait_event IS NOT NULL AND backend_type = 'client backend';
/* Find very large indexes and indexes that aren't used much */
WITH table_scans as (
tables.idx_scan + tables.seq_scan as all_scans,
( tables.n_tup_ins + tables.n_tup_upd + tables.n_tup_del ) as writes,
pg_relation_size(relid) as table_size
FROM pg_stat_user_tables as tables
all_writes as (
SELECT sum(writes) as total_writes
indexes as (
SELECT idx_stat.relid, idx_stat.indexrelid,
idx_stat.schemaname, idx_stat.relname as tablename,
idx_stat.indexrelname as indexname,
pg_relation_size(idx_stat.indexrelid) as index_bytes,
indexdef ~* 'USING btree' AS idx_is_btree
FROM pg_stat_user_indexes as idx_stat
JOIN pg_indexes as indexes
ON idx_stat.schemaname = indexes.schemaname
AND idx_stat.relname = indexes.tablename
AND idx_stat.indexrelname = indexes.indexname
WHERE pg_index.indisunique = FALSE
index_ratios AS (
SELECT schemaname, tablename, indexname,
round(( CASE WHEN all_scans = 0 THEN 0.0::NUMERIC
ELSE idx_scan::NUMERIC/all_scans * 100 END),2) as index_scan_pct,
round((CASE WHEN writes = 0 THEN idx_scan::NUMERIC ELSE idx_scan::NUMERIC/writes END),2)
pg_size_pretty(index_bytes) as index_size,
pg_size_pretty(table_size) as table_size,
index_groups AS (
SELECT 'Never Used Indexes' as reason, *, 1 as grp
idx_scan = 0
SELECT 'Low Scans, High Writes' as reason, *, 2 as grp
scans_per_write <= 1
and index_scan_pct < 10
and idx_scan > 0
and writes > 100
SELECT 'Seldom Used Large Indexes' as reason, *, 3 as grp
index_scan_pct < 5
and scans_per_write > 1
and idx_scan > 0
and index_bytes > 100000000
SELECT 'High-Write Large Non-Btree' as reason, index_ratios.*, 4 as grp
FROM index_ratios, all_writes
( writes::NUMERIC / ( total_writes + 1 ) ) > 0.02
AND NOT idx_is_btree
AND index_bytes > 100000000
ORDER BY grp, index_bytes DESC )
SELECT reason, schemaname, tablename, indexname,
index_scan_pct, scans_per_write, index_size, table_size
A second project that I invested in through the crowdfunding portal, Small Change, has “failed”. It’s a project for a worker-owned bed and breakfast. According to the project owner, the project needed more funds than what they were able to obtain from Small Change investors and other investors. The owner found a new investor, who required that all Small Change investors be removed from the project. They announced that to us earlier this year, and said we would receive our initial investment + 3%.
The Small Change leadership didn’t think this plan was good enough, starting with disagreeing the removal of Small Change investors.
Eventually, the project owner returned our initial investment + 8%. I don’t know if the project owner had the right to cancel and return our investments, but I’m happy to have my money back + 8%.
I’m disappointed in the ultimate outcome of not being able to participate in 1476 Magazine because this is the second project I invested in via Small Change that has not succeeded. The first was for a group of three single-family houses built to a high energy efficiency standard that have not yet sold.
I have an investment in a third project (in Philadelphia) that is converting a disused industrial building into mixed-use with residential and I hope that one succeeds, but I haven’t received an update since it was funded. Update: I inquired and the project owner sent me the update they sent in the last couple of months, which I seemed to have missed.
I believe in the Small Change mission, and crowdfunding broadly, but once I made my third investment I paused so that I could wait to see what happens with all of the projects.
The book is about her father, and the history of racist housing policies and displacement in Chicago’s West Side. Mark Satter, who died of heart problems when he was 49, owned several properties in Lawndale and Garfield Park.
One of them was a 12-flat in West Garfield Park at 3901 W Jackson Blvd, one block west of the eponymous park. Mark died in 1965, and the properties reverted to a trust he had set up, controlled by his wife, Clarice. Mired in debt to contractors and the mortgage, Clarice had family friend, Irving Block, sell the four properties.
3901 W Jackson Blvd eventually became the property of L.J. Epstein, a known slumlord, in 1967. (It’s unclear in the book, and online deed records don’t go that far back, if it was owned by someone else between Clarice selling it and L.J. acquiring it.)
Less than two years later, though, because of L.J.’s neglect of the building, Judge Kral placed it in receivership because of the activism of Ruby Kirk, a Black tenant from Tennessee.
The judge made Ruby the receiver, because the judge perceived that she cared about the building more than the owner. Ruby created a non-profit corporation on Monday, September 22, 1969, called “Chicago’s Best Landlord, Inc.” (It was involuntarily dissolved on February 1, 2003.)
Beryl wrote that during the remodel the corporation’s name was engraved into the stone above the front door. Along with the initials of the tenants at the time. As I was reading it I thought that stone had to still be there, and since I was biking over to Garfield Park for some hot air balloon training with a couple friends, I would stop by.
Ruby was also successful in pressing First National Bank of Chicago to issue a loan to her, a Black woman, when banks refused to lend to Black people as the Federal Housing Administration refused to insure the loans. If you’re from around here, you may remember that First National Bank merged with Banc One to become Bank One, which then became part of Chase. Chase is the second largest loan issuer in Chicago, and still has a “hard time” lending to Black people. It was also then, however, that the federal rules changed and FHA would insure mortgages in Black neighborhoods.
Chicago’s Best Landlord, Inc. owned the 12-flat from 1969 until 2001, when the U.S. Department of Housing and Urban Development (HUD) foreclosed the property. First National Bank had assigned the mortgage to HUD in 1976.
Peter Gritzanis purchased the property for $270,000, according to the deed recorded on June 28, 2001, at the Cook County Recorder of Deeds office. It looks like Peter stopped owning it in 2012.
I visited new-to-me cities in the United States, went to Mexico for the first time ever, and returned to Canada for the first time in over 10 years. I also rode a lot of new transit – including bike share – systems, which are denoted.
Oh, and I [brag] flew in United Polaris business class* [/brag] to New Zealand with my mom, after which we also visited Australia. Sadly, it’s now been over 2.5 years since I’ve traveled in Europe.
Two ferries in front of Sydney Opera House at Circular Quay in Sydney, Australia.
Aside: Transit advocates already know this: Every city I visited outside the United States had bus lanes. And not just a few here and there, but everywhere. On every route, in every city and suburb.
Here’s where I went in 2019 (in chronological order) (links go to photo albums on my Flickr):
I rode Brightline (now Virgin Trains); to Ft. Lauderdale in economy and from Ft. Lauderdale in first class. That meant use of the lounge, unlimited snacks and alcoholic beverages.
Metrobus – The bus is the best way to get your cute butt over to sunning on South Beach. Miami-Dade Transit also uses an app to sell QR-code based tickets that you show to a bus driver and scan to board Metrorail.
Metromover (the free people mover in downtown Miami)
I also rode a scooter for the first time, and I rode a bike for a few hours.
Métro, the ultra cheap and frequent subway, of course! I rode it out of the airport to a station 100 meters from my hotel.
Métrobus – my first BRT, and it was stupendous.
Bike share – A tourist from the U.K. asked me what the conditions were like cycling around the city. I said that depends on your comfort riding a bike in a busy big city, which is something I’m used to. After you observe and adapt to the different driving conditions and customs, it’s really no different than biking in Chicago or New York City.
Jitney bus. I forget what it’s called locally. This particular bus driver was plying a main street in a CDMX-branded purple bus that he apparently owned, looking for fares and once the bus was full (no more standing room), he pushed down on the accelerator to the nearest subway station.
I took Flixbus for the first time, from Sacramento to West Oakland. This is a German-based company that’s a network operator rather than a vehicle operator. Local companies contract with Flixbus to use Flixbus’s branding and ticketing systems.
Bay Wheels bike share (it used to be called Ford GoBike)
Charleston, South Carolina (no transit here, but I rented a bike for two days)
Tip: You’re probably going hiking in New Zealand, and bringing hiking boots. Clean them very well before you go to prevent being delayed at your arrival airport because you’ve triggered a biosecurity check of your shoes.
Lots of buses, which came quite frequently.
Regional rail from Britomart to Mt. Eden (yeah, a very short ride)
An annoying thing about transit in Auckland is that the transit card “deposit” is pricey and non-refundable. Additionally, the stored value (e-purse) on the card can pay for a second rider, but at the full cash rate, not the card rate.
Tongariro National Park
There’s a thrice-weekly train between Auckland and Wellington that stops here, but I didn’t schedule my trip well to be able to ride it.
I took a shuttle bus from my wonderful hotel (The Park Hotel Ruepehu) to the Mangatepopo Carpark, which is the start of the amazing Tongariro Alpine Crossing, and then from the end of the hike at Ketetahi Carpark back to the hotel. It was $20 NZD and it meant that my mom wouldn’t have to drive 60 miles for the same trip.
Wellington, New Zealand
The only transit we took here was the historic cable car – a cable-pulled funicular – from the high street to Kelburn (which is a suburb, but the way cities and suburbs as governmental jurisdictions and distinct geographies work in New Zealand and Australia is different than the U.S.).
At the top of the hill in Kelburn is a free cable car museum with a gorgeous restored vintage cable car, and an entrance to the botanic gardens.
We were going to take SkyBus to the airport, but due to a Christmas festival in the CBD, I wasn’t sure where it was going to pick up and we were running late.
I observed the high quality transit of Sydney (really, Transport NSW, because it’s all operated by the state of New South Wales) when departing the airport via the Airport Link. The T8 line is operated by Transport NSW’s subsidiary Sydney Trains, but the airport and other stations along the line are owned by a private organization that charges a station access fee (which is about $10 USD). Anyway, the first train we boarded was brand new, delivered this year! The train is called “B set” and has everything Metra doesn’t: Level boarding, passenger information displays, two wide doors per carriage, two full levels, and plenty of seating and standing space at the boarding level for people who need step-free access (this includes people with disabilities, people with strollers, luggage, bikes, etc.).
In addition to Sydney Trains, we rode NSW TrainLink to Katoomba in the Blue Mountains.
We rode the tram line (which they call L1, for light rail) from Chinatown to the Jubilee Park stop to visit Tramsheds, a redevelopment of a, get this, tram shed.
To get to Bondi Beach we rode Sydney Trains to Bondi Junction, a station that hooks into a shopping center and pedestrian shopping street. It’s odd…where we boarded bus route #333 for the final hop to the beach, and where we entered on the return from the shopping street, you can’t really see the station. It appears surrounded by offices and shopping. (I didn’t know this until later, but #333 runs from Circular Quay in the CBD to Bondi Beach and further on.)
SkyBus to and from the airport. This company runs frequent coaches for about $13 USD every 20 minutes from Tullamarine (MEL) airport to Southern Cross station. Here I bought two transit cards so we could ride a “Metro” (regional rail) train to Flinders Street station and then a tram to our hotel in St. Kilda (which is a suburb of Melbourne, but you could walk from our hotel to the Melbourne CBD in 20 minutes).
Melbourne, Victoria, has the world’s largest tram network, and a lot of it is free, so what do you think I did?
I rented a bike and rode around for four hours, as well.
We also rode the Belgrave Metro line to Belgrave station in order to ride Puffing Billy, a steam engine (which I don’t recommend unless you really like steam engines).
To get over to “Welcome to Thornbury”, a food truck and beer garden in the Melbourne “suburb” of Northcote we rode the Mernda Metro line from Central Station and then walked a couple blocks from Croxton Station. To return, we rode the 86 tram (my mom said she prefers the trams to trains because she can see more of the city).
My relaxing flight to Oceania
I have wanted to fly long haul international in business class for quite some time. I thought about saving miles for it. I roughly calculated how long it would take to acquire enough miles: about 3-4 years. And in the meantime, I can’t use the miles for what I think are more valuable trips, like deciding a week before to visit my mom ($600, or 30,000 miles, a “value” of 2 cents per mile).
Anyway, I decided I would pay for business class at some point, when it made sense. I used Google’s ITA Matrix website to find the cheapest days on which to fly one-way in one fare class, and the return in a different fare class. I figured out how to use Google Flights to find those itineraries, which conveniently links to United’s website for final purchase. I couldn’t do it. The prices were too high. And I didn’t want to fly first class from Chicago to San Francisco. (Air New Zealand flies nonstop from Chicago to Auckland, but I wanted to meet my mom in San Francisco so we could be on the same flight to Auckland.)
Fast forward to San Francisco International Airport, and my mom and I walk up to the gate. My mom asked if they hadn’t any better seats in economy available. Keep in mind that boarding starts in 10 minutes, so the answer was no. The gate agent mentioned that there are still seats in business class. I was curious, so I asked how much they were. She quoted me the upgrade fee, clarifying “and that’s per seat”.
I spent two seconds calculating the upgrade fee and comparing it to the hours of research I had done at home finding the right itinerary that would put me in business class for the cheapest outlay. “I’ll do it”, I replied, to which she asked, “For how many?”, double checking if it was for me, or me and my mom. “Two”, I said.
Not only do I still believe that I got a great deal on United’s Polaris business class, I also satisfied a longtime curiosity, enjoyed the flight, and woke up feeling ready to have a full day exploring Auckland.
Before leaving home I felt anxious that we would arrive in Auckland after having spent 14 hours in a cramped seat and potentially waste the first day feeling exhausted. Being able to sleep on a lie-flat seat meant that we felt pretty good when we arrived in Auckland at 8 AM. We got to the hotel by 10 AM – taking SkyBus to the city center – to drop off luggage, because the room wouldn’t be available until 2 PM.
We were still tired, though – when the hotel finally gave us access to a room, we inadvertently took a three hour nap.
No, I didn’t spend my day outside measuring parking lots. I spent it inside measuring existing, available data from OpenStreetMap. The last time I measured the amount of parking area in Chicagoland was on September 16, 2018, using the same data source.
Using the footprints of parking lots and garages drawn into OpenStreetMap as a data source, the area of land in a portion of Chicagoland occupied by parking lots and garages is 254,429,609 square feet. This portion represents the “envelope” of the Chicago city limits.
Last year it was 247,539,968 square feet, so the measured area of this portion of Chicagoland’s parking lots and garages increased by a hair over 2.7 percent. This isn’t necessarily new parking areas, but it’s parking areas that have been documented and mapped.
“Fare capping” is a jargon term for a fare policy that any transit agency can implement to save their riders money, make fares fairer, and potentially increase ridership. Another term is “deal”, as these policies net riders a break in the fares.
Fare capping ensures that riders who pay for rides with a transit card* will never pay more than the cost of one or more daily and multi-day passes that the transit agency includes in its fare capping policy.
Example 1: Consider a tourist or infrequent visitor to the city. The tourist will use transit to get around and when they arrive at a ticket vending machine, they’re given the option to get a smart card and load with “e-purse” (cash to pay as they ride) or get a smart card and load it with a pass for one or more days. In Chicago, there are 1-day, 3-day, 7-day, and 30-day options, for $10, $20, $28, and $105.
Just like anyone else, the tourist doesn’t want to pay more than they have to so they try to estimate the number of trips they’ll take today to see if the number of rides will cost more than $10 (the price of a 1-day pass). That sounds like a complicated thought exercise and one with a high likelihood of being wrong at the end of the day!
In a fare capping system, the tourist won’t have to choose! They obtain the transit smart card, load it with $5 cash, and perhaps connect it to an app or connect it to an auto-load functionality. The tourist rides buses and the ‘L’ and as soon as they ride $10 worth in the service day, their transit smart card automatically starts granting them free rides – their transit card has just been granted a 1-day pass!
By eliminating the need to choose between fare products, the tourist is more comfortable riding transit as much as they need to today because they know that they’ll never be charged more than $10.
Example 2: Consider someone who doesn’t earn very much and uses transit to get to work two times a day, five days a week, 20 days a month. At $2.50 per ride, that works out to $100, which is less than the cost of a 30-day pass in Chicago (which is $105, and an oddity, but I won’t address that). This person also sometimes takes additional rides after work and on the weekend to run errands, so their monthly rides will end up costing more than $105, the price of a 30-day pass.
It would make the most financial sense for this worker to get a 30-day pass. But when you don’t earn much, it’s hard to come up with or part with $105 at one time.
In a fare capping system, the person doesn’t have to worry about putting up $105 at this very moment. They would be able to ride transit as much as they want to in a 30-day period knowing that they will pay $2.50 per ride each day, but never more than $105 in a 30-day period. They don’t need to have $105 right now to be able to save money in the long run.
Cities with fare capping
11 cities, last updated September 12, 2019
London is first in the list because they were first with fare capping – It was pretty cool back in 2014 when my Anglophile friend told me to borrow his Oyster card and just tap away and ride transit all day, because I would never pay more than the cost of a 1-day pass.
London also has weekly capping, but this doesn’t include the Underground or Overground (buses and trams only). The week also starts on Monday and ends on Sunday.
Miami is the most recent place to have fare capping, which @erik_griswold spotted on a poster. Daily capping only.
Oakland-East Bay’s AC Transit has daily capping, but they don’t use those words. The website says that a day pass is applied to the Clipper transit smart card when a third trip is taken in a day.
Portland, Oregon: TriMet, C-TRAN, and Portland Streetcar seem to have the most flexible payment options for their fare capping policy: Riders with a Hop transit smart card get daily capping and monthly capping. People who pay with Google Pay and Apple Pay can also get daily and weekly capping; people who pay with Samsung Pay or a contactless credit card can get daily capping.
Houston, Texas: METRO has daily capping that kicks in after “Q” fare card holder takes three trips.
The Ride in Grand Rapids, Michigan, has daily, weekly, and monthly capping – this is the policy to beat.
A transit card is only necessary for transit systems that store the values and passes on a card. The Chicago Transit Authority and its vendor, Cubic, created Ventra, an account-based system that stores values and passes on an account in the cloud, and is expressed through the Ventra card, compatible smartphones, and compatible smartwatches. Fares to pay for rides Metra, a commuter rail company that participates in Ventra, can be purchased using the Ventra account’s stored value. Metra doesn’t accept taps from a Ventra card.
I probably won’t actually submit my idea to the Chicago Prize, a $10 million grant competition to revitalize neighborhoods, so I’m posting it here for everyone to read.
Basically, I want to use the $10 million as seed money to start a small organization that does design, construction administration, and property management to help homeowners build 1,000 accessory dwelling units in the form of new construction detached rear houses, attached rear houses, and renovated basement and attic units. $10 million won’t build that many, so there will be a small finance team to assemble additional grants as well as collect money through a crowdfunding initiative so anyone with $50 or more (up to $1,000) can invest in the program.
I thought solving this problem took longer than it should have. I thought there would have been an integrated function in PostgreSQL to pick the lowest (smallest) and highest (largest) numbers in an ARRAY of numbers.
LEAST and GREATEST didn’t work, since those work on expressions, not arrays.
MIN and MAX don’t work because they are aggregating functions, and I didn’t want that.
At the YIMBYtown conference in Boston, Massachusetts, last week, I heard from a panel comprising a developer, an architect, and a manager of special housing projects at the City of Boston. I forget who described this novel (sort of) multi-family housing configuration, but I noted it because it has benefits similar to Chicago’s coach & rear houses.
Here’s how it works.
There would be a residential building full of condos. Each condo would have a few bedrooms. One of the bedrooms would have its own kitchen or kitchenette, bathroom, and direct entry to the building’s corridor. The bedroom would be “locked off” from the rest of the condo.
The condo owner would rent the bedroom to a tenant, providing them housing that would most likely be less costly than an equivalent (new construction) apartment.
As the condo owner’s household changes – perhaps the family has another child – the tenant can move out and the owner can remove the kitchen to create another bedroom or closet.
Lock offs are heavily also present in time shares.
The zoning question is whether this condo is treated as one unit or two.
If you’re trying to increase affordable housing in your municipality, it’s necessary to classify this condo configuration as a single unit. Anything more and it wouldn’t be possible to build any of these, as the building developer would run into minimum lot area per unit and FAR limitations.
My friend Jacob Peters quickly drew a floor plan for what a lockoff condo would look like.
According to the speaker, the project didn’t get off the ground because the developer couldn’t get lending because of lenders who don’t understand the model. Said the speaker, “We need spaces that can evolve as our lives change. And we don’t have that flexibility in our housing stock.”
Benefits of accessory dwelling units (ADUs) like coach & rear houses
Increase the supply of affordable housing
Increase income for homeowners
Support aging in place – ADUs give families flexibility to share property and living spaces with extended family members
Increase work for small and local architects and contractors
Boost local business support by restoring a neighborhood’s historical density