“Dependency hell” used to be a big problem — you’d download one package, attempt to install it, and find out you needed three other packages. Download one of them, attempt to install it, and learn about five other packages. Fifty seven packages later, you forgot what you were trying to install in the first place and went home. Or, I suppose, you managed to install that first package and actually use it. The advent of repo-based deployments — where dependencies can be resolved and automatically downloaded — has mostly eliminated dependency hell. But, occasionally, you’ll have a manual install that says “oh, I cannot complete. I need libgdkglext-x11-1.0.so.0 or libminizip.so.1 … and, if there’s a package that’s named libgdkglext-x11 or libminizip … you’re good. There’s not. Fortunately, you can use “dnf provides” to search for a package that provides a specific file — thus learning that you need the gtkglext-libs and minizip-compat packages to resolve your dependencies.
Zoning, Conditional Use, and the Comprehensive Plan
Long blurb I’ve written in response to the public outcry about the Hinckley Township BZA approving a conditional use permit for Pride One to construct senior apartment housing in a business district:
Since ‘senior housing’ is a conditional use in business districts, my opinion is that our zoning resolution put the BZA in a bind where they *had* to approve the request. When the BZA rule on something, decisions can be appealed in court. Now, if you wanted to build a shed a few feet into a riparian setback and they said no, you probably wouldn’t blow a couple grand on a lawyer to convince a Medina County Court of Appeals judge that the BZA were wrong. Big companies, on the other hand, will absolutely do that. Almost every case I see in the court docket is <Some Company> v <Some Township’s BZA>.
The setback variances, as an example, the company never presented any good justification for *needing* the variance. They wanted to build more stuff and ‘needed’ to build where they weren’t allowed to in order to have more units to rent. “I want to do it” isn’t the bar you’ve got to pass when requesting a variance (otherwise zoning rules would be pointless!). Had they taken appealed the denial in court, I expect the BZA’s decision would have stood. There are cases where the court determined that you don’t have a right to the *best* use of your property — in this case, they don’t have a right to pack as many units in the lot as possible.
The conditional use approval? If it had been denied, Pride One would likely have won an appeal (and quickly). We’d have the facility right where they wanted it, and they could have gone after the township for “damages” — legal fees, lost business, etc. Why? Because ‘senior housing’ is specifically listed as a conditional use for business districts. Our township comprehensive plan says residents *want* senior housing so long-time residents who no longer want to care for two acres don’t have to move away from the township. It’s not like we’ve got five other senior housing facilities that have already more than sufficiently addressed this need. There’s nothing in our zoning or comprehensive plan that says we want to slow the creation of senior housing facilities. They’ve got a lot of evidence that their senior housing facility should be allowed. I cannot think of any good (i.e. would stand up in court) reason the BZA could have given for denying the conditional use.
Which, of course, begs the question ‘why are we allowing senior housing in business districts!?!’ … and that, it seems, is the result of a comprehensive plan that got feedback from some 6% of the residents back in 2014 or 2015. Why would someone say “ok, that’s a reasonable response rate … I’m going to write up what the township wants based on these responses” is a great question. It seemed, from the past few Trustee meetings, that it’s possible to revise the comprehensive plan earlier than planned. That would be the first step in avoiding this in the future — once the plan changes, it’s reasonable to revise the zoning resolution to address the newly stated desires of the township. And, if there is an update to the master plan, make sure you respond to whatever survey is used. Make sure your friends who live in the township respond. Make sure your neighbors respond. Claiming to develop a plan based on responses from a small sampling of residents is absurd. Be specific — if you think we need more senior housing but don’t want apartments, then specify single-family residential senior housing.
I’d encourage people to read through the zoning resolution (https://www.hinckleytwp.org/content/zoning-regulations) and identify anything *else* that they don’t like. Look at the full list of conditional uses — you don’t want a hospital, then hospital shouldn’t be a conditional use either. Instead of reacting after the fact, we need to push through changes *before* whatever-it-is starts being built. Existing stuff gets grandfathered in (i.e. the senior housing is there even if we change the regulations), but new construction is limited by the new rules. Read the comprehensive plan (https://www.hinckleytwp.org/content/comprehensive-plan-master-policy-plan) and see if (1) it accurately reflects what you want to see in the community going forward and (2) if you think that plan is reasonably addressed by the zoning resolution.
Get engaged — attend township meetings (we’re starting to record the meetings and posting them on YouTube for people who aren’t able to join meetings at the scheduled time — https://www.youtube.com/channel/UCTffOEhdDc7UO0fN-tgyEnw) or read the minutes. Email the trustees to let them know what you think. Do you think the comprehensive plan needs to be updated? Should there be a minimum response rate to consider feedback to be representative of the community’s desires? Maybe you think the Township should explore adding a growth management plan — limiting the number of building permits available. Hudson did so to ensure the City didn’t grow faster than the capabilities of city services (police, fire). Maybe you think the lot size or setbacks need to be increased. Maybe you think everything is awesome the way it is. Whatever you think, make sure your voice is heard.
Keeping Hinckley Rural – Zoning
What do I think might help keep the township rural? I think we need a combination of changes to the zoning resolution, training for BZA members (possibly even replacing BZA members), and changes to how variances are written.
Zoning changes — Increasing lot size has been discussed, and doing so would certainly would reduce the amount of development. We might want to include minimum green space / maximum total lot coverage in the zoning regulations. Some townships out in Geauga County have looked at such regulations to retain rural character. As currently written, I believe I could transform the entirety of my 2 acre lot into driveway, parking lot, patio, etc. Or just pave the whole thing. Increasing minimum lot widths at the road might ensure homes are placed farther apart, although that might have the unintended consequence of moving some houses closer to the street with neighboring ‘flag’ lots in the rear. Increasing the side yard setbacks would ensure spacing between homes too. Including a slow growth plan — limiting the number of new construction permits per year — could ensure development doesn’t outpace the township’s ability to provide police, fire, and road repair services.
BZA Training — The BZA does not have legal authority to issue variances any time someone finds a zoning regulation inconvenient. Their authority is to issue a variance when strict adherence to zoning regulations deprives the owner of beneficial use of their property. An extreme example — a lot with a bunch of riparian setbacks that mean the buildable area is a 2×40 rectangle toward the front edge of the property. The BZA has the authority to approve a variance from the township’s fairly substantial front yard setback because a 2×40 buildable area has certainly deprived the owner of the ability to have a house on their residential property. Building a house forty feet into the front yard setback lets them have a 40×42 house that’s closer to the road than the zoning regulations stipulate. Building within a riparian setback can destabilize the bank of the stream, so isn’t a good option.
There are several variances where I don’t believe the requestor has shown a “practical difficulty” for area variances. These requests basically amounted to “yeah, I could do it another way … but I don’t want to”. The BZA does not have the legal authority to issue a variance, and I believe these variances would be overturned if challenged in court. That’s a whole process — and you’ve got to own one of the adjoining properties to have standing to challenge it in court. But there’s no reason the BZA should be exceeding its authority in approving variances, and it seems like they need to have what does and does not constitute a practical difficulty or hardship clarified.
Changes to how variances are written — I think variances should be written as restrictively as possible to address the specific problem presented to the Board. If my rear property line is 200′ long, and I want to build a 20×20 garage in the rear yard setback because of some Very Good Reasons, there is no reason for a variance of 20′ from the 50′ rear yard setback. Issuing a non-specific variance means additional, future, construction can also be built 20′ into the rear yard setback. Without having to show any difficulty in building the structure elsewhere — you’ve basically got a lot with a special rear yard setback instead of special permission to build that garage. Write a variance allowing 20′ at the rear of the property to have a 20′ variance from the 50′ rear yard setback. Write a variance allowing the building blueprints presented to the Board to have a 20′ variance.
Keeping Hinckley Rural – Senior Housing
While I don’t think any survey with a 6% response rate is a reasonable basis for determining “what the township residents want” … desire for senior housing, called out in the 2015 comprehensive plan, seems reasonable. Two acres is a lot of property to look after, especially as you get older and getting around is more difficult. Walking the woods and mowing the grass … I could see this becoming a challenge. An apartment complex at the edge of town isn’t a popular solution, but how could the township make housing more appealing to older residents?
To start out with, I think any high-density senior housing should be a unique zoning area. S1. Getting property re-zoned is a more difficult path than requesting a conditional use be permitted. There’s more leeway to not re-zone the parcel.
Conservation development allows a development to bypass minimum lot sizes by using a combination of open spaces and private lots to average out to the minimum lot size. That is, if I have 200 acres in a two acre minimum district … I can develop a hundred one acre parcels and hold the other hundred acres as open space. What if we combine the high-density senior housing with a conservation development idea. A conservation development with small front, side, and rear yard setbacks that make quarter or half acre lots feasible. Then the senior development is enveloped in a huge area of maintained green space. This would allow for continued home ownership (I sure as hell don’t want to start paying a couple grand a month in rent after I retire!), minimize yard upkeep (part of the HOA fees could even go toward yard maintenance), and the rural environment is maintained.
Strawberries!
Decoy Garden
Trail Expansion
We’ve created a beautiful wood-chip covered trail in our woods — this has transformed the mucky maple harvest path into a usable trail and made collecting sap a lot quicker/easier (and less muddy!). This year, we’re working on extending the trail along the east side of our property. This will provide easier access to the maples in the back woods as well as the apiary. So far, I’ve cleared a bunch of honey suckle, multi-flora rose, wild raspberries, and general forest undergrowth. There’s a path angled off of the original path, a right hand turn, and a winding path along the eastern side of our property. Once we get it cleared, we collected a huge pile of wood chips from the Metro Parks this year that we’ll use to cover the trail.
2021 Hops
(Mostly) Fits In a Volt
Harbor Freight had one of their 20% off coupon sales for Fathers Day. We’ve been wanting to buy the 10×12 greenhouse for a while, and 20% off was the perfect opportunity to do so. There’s a site where someone details all of the tweaks they used to enhance the structure — we’ll be making a lot of these enhancements as we build the thing.
One of these days, we’ll have an electric farm truck running … but, until then, a 10×12 greenhouse in its box #FitsInAVolt … at least sufficiently to transport it a short distance home!
Adding MariaDB/MySQL Users
Quick notes on creating a database user — MariaDB and MySQL use a combination of username and source host to determine access. This means ‘me’@’localhost’ and ‘me’@’remotehost’ can have different passwords and privilege sets. How do you know what the hostname is for your connection? I usually try to connect and read the host from the error message — it’ll say ‘someone’@’something’ cannot access the database.
# Create a user that is allowed to connect from a specific host create user 'username'@'hostname' identified by 'S0m3P@s5w0rd'; GRANT ALL PRIVILEGES ON dbname.* TO 'username'@'hostname'; # Create a user that is allowed to connect from a specific IP create user 'username1'@'10.5.1.2' identified by 'S0m3P@s5w0rd'; GRANT ALL PRIVILEGES ON dbname.* TO 'username1'@'10.5.1.2'; # Create a user that is allowed to connect from database server create user 'username2'@'localhost' identified by 'S0m3P@s5w0rd'; GRANT ALL PRIVILEGES ON dbname.* TO 'username2'@'localhost'; # Create a user that is allowed to connect from any host create user 'username3'@'%' identified by 'S0m3P@s5w0rd'; GRANT ALL PRIVILEGES ON dbname.* TO 'username3'@'%'; # Flush so new privileges are effective flush privileges; # View list of database users SELECT User, Host FROM mysql.user; +----------------+------------+ | User | Host | +----------------+------------+ | username3 | % | | username2 | 10.5.1.2 | | username | hostname | | root | 127.0.0.1 | | root | ::1 | | root | localhost | +----------------+------------+ 6 rows in set (0.000 sec)





