Vital Communities-Zoning for Great Neighborhoods Survey

Mike Kiess from Vital Communities has sent out a request for responses to a short survey set up by the VT Department of Housing and Community Development. The deadline’s short, but they’re looking for responses from both VT and NH

The VT Department of Housing and Community Development is starting a project to create templates for bylaws and zoning regulations that will allow people to do more things with their properties. Use by towns would be voluntary.

Please share your opinions in this short survey. URL is

NH opinions matter, too! Housing is a shared regional challenge, and planners from NH will be involved.

Your response by Friday, July 5, 2019 is appreciated.


What’s this thing called “Current Use”?

The Current Use law in New Hampshire provides a tax break for certain property owners who choose not to change the “current use” of their property to a higher level of development. However it shifts the tax burden to property owners who do not have property in “current use”. Here are some details.

  • In 1973, the NH Legislature created the Current Use law to “encourage the preservation of open space” by giving property owners a break on their taxes. (NH RSA 79-A:1)
  • The NH Current Use Board sets the level of “encouragement”. Today, current use landowners receive as much as a 98% discount on their property taxes.
  • This means that the other residents in town have to pay higher property tax to make up for the taxes not collected from properties in “current use”. (It’s a zero-sum game. If the legislature mandates a discount on taxes for some properties, the taxes have to go up for other residents.)
  • Many property owners have already permanently conserved land. Consequently they do not need additional encouragement (through a tax break) to preserve open space since development is already precluded.
  • In my town of Lyme, NH, it appears that 94% of all land in Lyme is either conserved or in current use. Discounts for current-use properties total over $1.5 million and add about $5 to our $27.19 per thousand tax rate.
  • Forty-five years later, we now understand the true effect of the Current Use law: in rural towns with lots of open space, it drives up the tax rate for all residents. The law has relatively little effect in more densely-developed, urban towns, since there are few current use properties.

The NH Current Use Board has opened a public comment period (for this year) about the proposed Current Use Assessment Ranges. Comments may be submitted in writing to Tracey Russo, Paralegal Department, NH Department of Revenue Administration by mail at PO Box 457, Concord, NH 03302; by fax at (603) 230-5932; or by e-mail at The deadline for the submission of written comments is Thursday, June 20, 2019.

I just sent an email to along the lines below:

To the NH Current Use Board:

I am a resident of Lyme NH. I wish to submit a public comment to the Board regarding their regulations regarding Current Use.


/s/ Your name

The NH Legislature could rewrite the Current Use law to make it more equitable. This is a long term project. However, I request the Current Use Board to consider the following changes to their regulations:

1) Add the requirement that land may not qualify for current use treatment if it is already has a permanent restriction from development.

2) Decrease the base discount on Current Use property, to create meaningful incentives for creating a stewardship plan or making the land available for the public to access.

3) Set different discount rates for current use land and permanently-conserved land. Permanently conserved land can be assessed at its market rate, while current use land can receive a temporary discount for the time that the land is in its current use.

I would encourage you to send your own message, using any (or all) of the points above. I would also like to know what you wrote: you can cc me at Thanks!

Any opinions expressed here are solely my own, and not those of any public bodies, such as the Lyme Community Development Committee or the Lyme Planning Board, to which I belong. By Town policy, I am not permitted to send messages on these subjects through the Listserv. However, I would be very interested to hear your thoughts – you can reach me at

Strong Towns “Strength Test”

I was browsing around the Strong Towns web site, and came upon their criteria for measuring the strength and resilience of a town.

They point out that full technical analysis is time consuming and often not usable by non-technical people. So they designed 10 questions to give an interesting view into the issue. The Strong Towns “Strength Test” is at

I would be intrigued to hear your thought/answers. Send them to me at Thanks.

Any opinions expressed here are solely my own, and not those of any public bodies, such as the Lyme Community Development Committee or the Lyme Planning Board, to which I belong. By Town policy, I am not permitted to send messages on these subjects through the Listserv. However, I would be very interested to hear  your thoughts – you can reach me at

Strong Towns – Breaking out of the Housing Trap

On 2 April 2019, I went to a talk sponsored by New Hampshire Housing Finance Authority in Claremont, NH. The announcement stated:

What does it mean to be a “Strong Town”? In April, nationally known planner and engineer Chuck Marohn will speak at community events in Rochester, Concord, Claremont and Portsmouth to discuss the STRONG TOWNS perspective of community economic resilience, citizen involvement, and land use.

Marohn will focus on how housing affordability fits with the STRONG TOWNS philosophy during the April 1-2 events presented by New Hampshire Housing Finance Authority.

Here are my notes from the talk. (Does this seem too long? Don’t want to read the whole thing? See the summary…)

The speaker was Charles Marohn from Brainerd MN. He’s the founder of, and has been working since 2008 to create models for towns to become financially strong and resilient.

High Price of Housing

He observed that cities and towns are gentrifying – housing prices are going up – and that stagnating incomes everywhere mean that people have trouble affording to live there. He is seeking improvements that will stick, and leave the municipality in a good place.

He talked about the “Agriculture Trap”. Once a civilization gets a surplus in resources (because of agriculture), people had the ability to specialize and spend time on other pursuits – to become shamans, soldiers, artists. The increased resources also meant that the population could increase.

The “trap” is that the increase in population forces the need for more food, which increases the reliance on agriculture, which allows further population growth. That civilization is “trapped by agriculture” – it can never go back to its pre-agricultural state.

The Housing Trap

Marohn traced the history of the current “housing trap” to the way  governmental and financial systems make it hard to change the way homes are funded. The Great Depression created massive deflationary pressure, and led to the Homeowners Act of 1933. Fannie Mae was created in 1938, to securitize  home mortgages. The GI Bill was a good program, but caused home prices to rise. Freddie Mac quasi-privatized all this in the 70’s.

Which means that to have a middle-income home today, almost every family must have two breadwinners.

It also means we cannot (easily) go back to lower-price housing because of the structural problems. Who benefits from high housing prices?

– Local, state, and federal government (property and other taxes)

– Baby Boomers – who rely on the high cost (value) of their homes as a significant portion of their retirement

Complex vs. Complicated

Marohn talked about the difference between “complex” and “complicated” systems.

  • Complex systems are adaptive, and adaptable. They emerge from good attributes because changes to the environment can be absorbed and adjusted to.
  • Complicated systems are predictable, but fragile. If things go badly for a complicated system, they break. He gave the example that a farm is complicated. If it’s a bad year for corn, the farmer cannot simply plant beets.

Cities/towns are the quintessential human habitat. They are also complex: they emerge from a collection of interacting objectives, they experience feedback, and adapt to those pressures. This is good – it leads to resiliency to challenges and stress.


How can a town improve and thrive? Marohn offered these strategies:

1) Allow the next increment of building style by right. If the town currently allows single family homes, allow accessory dwelling units. If your town allows duplexes/accessory dwellings, allow quads. This must be *by right* – no special permissions should be necessary. However:
– No neighborhood should experience radical change, and
– No neighborhood should be exempt from change

Towns should look toward dynamic rezoning. As the town changes over the years/decades, so too should the zoning rules adapt to what people are requesting.

2) Lower the bar to entry. To encourage people and businesses to move to town, find a way for people to “start with nothing, and end with something.”

For housing, most people can’t imagine living in a 500sf home. Yet there are countless homes in our communities that obviously started out very small, but expanded as their owners had more resources. Zoning should allow people to start with very small residences affordably.

For business, don’t require an entrepreneur to meet every strict requirement. (If a building needs $300K of improvements to open, it will never happen.) Instead, correct the imminent health threats, and then give a provisional occupancy permit. (Maybe even put a sticker on the front window stating the provisions of the code that aren’t currently met.) Then after six months of operation, rank things. Require the owner to put 3% of their revenue annually into an account for property upgrades. When all the conditions are cleared, everyone can have a celebration. In the meantime, the property is providing services, on the tax rolls, and getting better.

3) Respond to how people use and live the city/town. Marohn advocated this public investment process for a strong town:

  • Humbly observe where people are struggling
  • Ask “What is the smallest thing we can do to address that struggle?”
  • Do it. Right now.
  • Repeat

Marohn closed by noting there is a lot more information on the Strong Towns ( website.

Any opinions expressed here are solely my own, and not those of any public bodies, such as the Lyme Community Development Committee or the Lyme Planning Board, to which I belong. By Town policy, I am not permitted to send messages on these subjects through the Listserv. However, I would be very interested to hear  your thoughts – you can reach me at

Can Accessory Dwelling Units Help Meet Our Region’s Housing Needs?

On 4 October 2018, PlanNH and Vital Communities sponsored a talk titled, Can Accessory Dwelling Units Help Meet Our Region’s Housing Needs? at the Kilton Library, in West Lebanon NH.

The primary speaker was Kol Peterson from Portland Oregon. He has published many books/resources on the subject of Accessory Dwelling Units:,, and Backdoor Revolution.

His answer is a strong, YES. Primary drivers for people to create an ADU:

  • Rental income
  • Flexible space for intergenerational use
  • Age in place

Why are ADUs valuable for a municipality?

  • 75% of 2018 households have 1-2 people
  • In major cities, 35-45% of households have a single person
  • But they have no option but to purchase a large single family home
  • Average home: 1950 – ~950sf; 2018 – ~2600 sf
  • Small homes cost less to build, and have HUGE energy savings
  • A huge benefit of additional housing using existing homes with minimal impact to the town/streetscape.

Parking: In Portland OR, the US city with greatest penetration (1%), ADUs have no observable effect on parking. (A municipality only needs to find space for one additional car per hundred homes.)

The Finances: ADUs (like all construction projects) are expensive to build, therefore, breakeven has multi-year payback:

  • 250sf => $100K
  • 600sf => $200K
  • 750sf => $150K to $300K

ADU Construction is not financially viable for ordinary developers who want to “build-and-flip”:

  • Doesn’t improve the value of the property enough to make up for the $100k-300K construction cost.
  • But… rental income breaks even over 5-10 years (depending on construction cost and market)
  • Attractive for people who plan to stay in the neighborhood for 20-30 years

Financing is hard: must rely on home equity line of credit, savings, cash out of liquid assets, family, sweat equity (often 50% of cost)

Takeaway: Given the difficulties of building anything (brainstorming, finding an architect, talking with the neighbors, schematics and design, etc) and the modest financial returns, ANY limits of permitting and zoning regulations discourage people from developing ADUs. There is a good discussion in the slides. Another example of a disincentive, the State of NH requires an attached ADU to have a connecting door.

Furthermore, many laws/ordinance/regulations require owner-occupied ADUs. This is also a disincentive, for the following reasons:

  • Appraisers will undervalue because of deed restriction, therefore may not be able to refinance
  • Lenders cannot (by definition) owner-occupy, so may choose not lend
  • Affordable housing NGOs cannot occupy, so may not fund either
  • The requirement places a significant restriction if the owner needs to move
  • Why wouldn’t owner simply build an un-permitted ADU?
  • No cities have seen large number of ADUs, so it’s not a practical problem
  • Finally, what other property type in the US has this requirement?

However, certain restrictions are not unreasonable:

  • Regulations limiting ADU to 750-800sf are not an important restriction because ADUs are designed for secondary home/smaller unit
  • Regulations preventing ADU from being subdivided is not important restriction

What about people who use ADUs as Short Term Rentals?

  • There’s no data on the trends
  • If it is becoming a problem, decouple ADU reg’s from ST rental reg’s – they’re not the same thing.



Sponsors: Vital Communities – Workforce Housing and PlanNH

Any opinions expressed here are solely my own, and not those of any public bodies, such as the Lyme Community Development Committee or the Lyme Planning Board, to which I belong. By Town policy, I am not permitted to send messages on these subjects through the Listserv. However, I would be very interested to hear  your thoughts – you can reach me at

Jetpack Publicize: Setting the image and text shown on Twitter and Facebook

I use Jetpack Publicize to share my posts on Facebook and Twitter. This makes it easy to create a single WordPress post and have it show up on social media sites. Those services automatically use the Featured Image of the WordPress post, plus an excerpt of the title/text.

There’s another cool feature: Facebook and Twitter will include a photo and text summary for your site whenever someone types your URL into their post on Facebook and Twitter.

But… It can be tricky to figure out how Facebook/Twitter retrieve the image and the text. (I started this quest because Facebook was choosing the wrong image for the thumbnail. I found my first clue by reading WP Beginner’s article How to fix Facebook Incorrect Thumbnails.) This led to the debugging techniques below.

Both Facebook and Twitter use Open Graph metatags to find the desired image, text, title, etc.  Jetpack automatically sets these OpenGraph meta-tags: og:image tag, og:title, and og:description. It also automatically inserts tags for Twitter: twitter:text:title and twitter:description.

To see what those services will display, each has a Debugger/Validator. To use them, go to the page below and type in your URL.

Facebook Validator:
Twitter Card Validator:

Problem:  Jetpack automatically sets the OpenGraph tags, but sometimes it chooses values that are not useful, and they cannot be modified within Jetpack. (At least, Jetpack support could not tell me how to set them.)

Update: Using Jetpack 7.3.1 and Yoast 11.3, the conflict between these two plugins appears to have gone away. But this note still describes useful debugging techniques for Facebook and Twitter. (31May2019)

Solution – Part 1: The Yoast SEO plugin – I use the free version – also lets you set the Open Graph tags for both Facebook and Twitter. (In addition, I really like how it helps to optimize my text for search engines.) However, Yoast and Jetpack’s Open Graph tags interfere with each other.

Solution – Part 2: This is a little bit yucky, but you can disable Jetpack’s OpenGraph tags with a bit of code in your child theme’s functions.php file, as described in Remove Jetpack’s Open Graph meta tags This is no longer required – see Update above.

TL;DR: (Too Long; Didn’t Read) – now live!

I have reworked my blog so that the primary domain name is “Random Neurons Firing” (instead of the prosaic Same content, but a better name.

I’m also adding a new topic to those I’ve previously covered (“Software, Networking, Life”). Over the last two years, I have gone to many planning and zoning conferences to learn more about how to provide attractive housing within communities. I’ll post my notes from those conferences and workshops here. I need to note that these will be my own opinions, and not those of any public boards to which I might belong.

SQLite Date and Time Functions – explained

A while back, I was greatly confused by SQLite date and time functions. It took me a while to figure out what was wrong. (It was my error: I hadn’t observed the rule that dates must have this form “YYYY-MM-DD” – four digit year, two-digit month and day.)

Nevertheless, I found that the documentation wasn’t quite clear, so I wrote up these notes as an adjunct to SQLite Datatypes and the SQLite Date and Time Functions pages.

2.2. Date and Time Datatype

SQLite does not have a storage class set aside for storing dates and/or times.
The conventional way to store dates is as a string in a TEXT field.
These fields can be compared directly (as strings) to determine equality or order.

For other date-as-string formats, see Date Strings on the Date And Time Functions page.

For further manipulations on dates and times, the built-in Date And Time Functions of SQLite convert dates and times between TEXT, REAL, or INTEGER values:

  • TEXT as strings (“YYYY-MM-DD HH:MM:SS.SSS” – with leading zero where required, and four-digit year – a so-called “timestring”)
  • REAL as Julian day numbers, the number of days (with fractional part) since noon in Greenwich on November 24, 4714 B.C. according to the proleptic Gregorian calendar.
  • INTEGER as Unix Time, the number of seconds since 1970-01-01 00:00:00 UTC.

Applications can chose to store dates and times in any of these formats and freely convert between formats using the built-in date and time functions.

Date And Time Functions

The Date and Time Functions page doesn’t really define the the arguments or the return types, so I make them explicit below.

Timestring: The conventional way to store dates is as a timestring – a TEXT field (e.g., “YYYY-MM-DD HH:MM:SS.SSS”). These fields can be compared directly (as strings) to determine equality or order.

To convert to other date representations, SQLite supports five date and time functions. All take a timestring (a subset of IS0 8601 date and time formats, listed below) as an argument. The timestring is followed by zero or more modifiers. The strftime() function also takes a format string as its first argument.

  1. date(timestring, modifier, modifier, …) Returns the date as a string: “YYYY-MM-DD”.
  2. time(timestring, modifier, modifier, …) Returns the time as a string: “HH:MM:SS”.
  3. datetime(timestring, modifier, modifier, …) Returns a string: “YYYY-MM-DD HH:MM:SS”.
  4. julianday(timestring, modifier, modifier, …) Returns the Julian day as an REAL – the number of days (and fractional part) since noon in Greenwich on November 24, 4714 B.C. (Proleptic Gregorian calendar).
  5. strftime(format, timestring, modifier, modifier, …) Returns the date formatted according to the format string specified as the first argument. The format string supports the most common substitutions found in the strftime() function from the standard C library plus two new substitutions, %f and %J.

… see the original SQLite page for modifiers and legal timestring formats …


This section replicates the examples of the original page, but includes the results and types of the function.

Compute the current date. Returns timestring.

SELECT date('now');  -- Result: 2018-03-07

Compute the last day of the current month. Returns timestring.

SELECT date('now','start of month','+1 month','-1 day'); -- Result: 2018-03-31

Compute the date and time given a unix timestamp 1092941466. Returns timestring.

SELECT datetime(1092941466, 'unixepoch'); -- Result: 2004-08-19 18:51:06

Compute the date and time given a unix timestamp 1092941466, and compensate for your local timezone. Returns timestring.

SELECT datetime(1092941466, 'unixepoch', 'localtime'); -- Result: 2004-08-19 14:51:06

Compute the current unix timestamp. Returns INTEGER.

SELECT strftime('%s','now');  -- Result: 1520444198

Compute the number of days since the signing of the US Declaration of Independence. Returns REAL – days and fractions of a day.

SELECT julianday('now') - julianday('1776-07-04'); -- Result: 88269.7339379285

Compute the number of seconds since a particular moment in 2004: Returns INTEGER.

SELECT strftime('%s','now') - strftime('%s','2004-01-01 02:34:56'); -- Result: 447519729

Compute the date of the first Tuesday in October for the current year. Returns timestring.

SELECT date('now','start of year','+9 months','weekday 2'); -- Result: 2018-10-02

Compute the time since the unix epoch in seconds (like strftime(‘%s’,’now’) except includes fractional part). Returns REAL – days and fractions of a day.

SELECT (julianday('now') - 2440587.5)*86400.0; -- Result: 1520444280.01899

Local by Flywheel won’t start because it’s regenerating Docker Machine TLS certificates

I have been using Local by Flywheel and really enjoying it. It does two things:

  1. You can stand up a development version of a WordPress site on your laptop and horse around with it. It’s fast, you can make experiments, and if it blows up, you can simply regenerate in a minute or two.
  2. Using the (paid) Flywheel hosting, you can transfer your local dev server to their public hosting, and you’re on the air.

I have not used this latter facility, but I’m here to tell you that the first part is pretty slick.

But… I went away from Local by Flywheel for a month or so, then came back to start working on a new site. When I wanted to start it up, I saw a succession of messages stating that it was “Regenerating Machine Certificates” and that “Local detected invalid Docker Machine TLS certificate sand is fixing them now.” This looped apparently forever, and wouldn’t work. Here’s my report on their community forum.

After considerable searching, I found a procedure from one of the developers that seems to do the trick. It involves downloading a new version of the Boot2Docker ISO file, and letting the system re-provision itself. The process involved a) Creating an alias (“local-docker-machine”) for the “Local by Flywheel”s docker-machine binary; b) issuing a series of commands to that alias:

local-docker-machine stop local-by-flywheel
rm -rf ~/.docker/machine/certs
local-docker-machine create local-cert-gen
local-docker-machine start local-by-flywheel
local-docker-machine regenerate-certs -f local-by-flywheel
local-docker-machine rm -f local-cert-gen

These steps caused Local by Flywheel to recognize that the Boot2Docker ISO was out of date. It triggered a download of the new version, and gave the output below. When it completed Local by Flywheel worked as expected. Whew!

bash-3.2$ alias local-docker-machine="/Applications/Local\ by\"
bash-3.2$ local-docker-machine stop local-by-flywheel; rm -rf ~/.docker/machine/certs; local-docker-machine create local-cert-gen; local-docker-machine start local-by-flywheel; local-docker-machine regenerate-certs -f local-by-flywheel; local-docker-machine rm -f local-cert-gen;
Stopping "local-by-flywheel"...
Machine "local-by-flywheel" is already stopped.
Creating CA: /Users/richb/.docker/machine/certs/ca.pem
Creating client certificate: /Users/richb/.docker/machine/certs/cert.pem
Running pre-create checks...
(local-cert-gen) Default Boot2Docker ISO is out-of-date, downloading the latest release...
(local-cert-gen) Latest release for is v18.09.1
(local-cert-gen) Downloading /Users/richb/.docker/machine/cache/boot2docker.iso from
(local-cert-gen) 0%....10%....20%....30%....40%....50%....60%....70%....80%....90%....100%
Creating machine...
(local-cert-gen) Copying /Users/richb/.docker/machine/cache/boot2docker.iso to /Users/richb/.docker/machine/machines/local-cert-gen/boot2docker.iso...
(local-cert-gen) Creating VirtualBox VM...
(local-cert-gen) Creating SSH key...
(local-cert-gen) Starting the VM...
(local-cert-gen) Check network to re-create if needed...
(local-cert-gen) Waiting for an IP...
Waiting for machine to be running, this may take a few minutes...
Detecting operating system of created instance...
Waiting for SSH to be available...
Detecting the provisioner...
Provisioning with boot2docker...
Copying certs to the local machine directory...
Copying certs to the remote machine...
Setting Docker configuration on the remote daemon...
Checking connection to Docker...
Docker is up and running!
To see how to connect your Docker Client to the Docker Engine running on this virtual machine, run: /Applications/Local by env local-cert-gen
Starting "local-by-flywheel"...
(local-by-flywheel) Check network to re-create if needed...
(local-by-flywheel) Waiting for an IP...
Machine "local-by-flywheel" was started.
Waiting for SSH to be available...
Detecting the provisioner...
Started machines may have new IP addresses. You may need to re-run the `docker-machine env` command.
Regenerating TLS certificates
Waiting for SSH to be available...
Detecting the provisioner...
Copying certs to the local machine directory...
Copying certs to the remote machine...
Setting Docker configuration on the remote daemon...
About to remove local-cert-gen
WARNING: This action will delete both local reference and remote instance.
Successfully removed local-cert-gen

Internet Identity, Nationwide Bank, and the Post Office

Dave Winer wrote about “internet identity” and that several companies were probably thinking about solving the problem. Specifically, he said:

But because money is so central to identity, it’s surprising that there isn’t a Google or Amazon of identity. Seems there’s money to be made here. An organization with physical branches everywhere, with people in them who can help with indentity (sic) problems.

This reminded me of the proposal to have US Post Offices become banks (for example, here and a zillion other places.)

The advantages:

  • There are post offices everywhere. The postal system is constitutionally mandated to be present, so it’s useful for them to have a valuable mission even as the volume of paper mail declines.
  • The “Bank of the US Post Office” could provide an ATM at each branch. You could withdraw cash without fees anywhere in the US.
  • They could provide a low cost (no cost?) saving/checking accounts for the traditionally “unbanked”, instead making people use check cashing services, payday lenders, etc. who siphon off a percentage of the transaction.
  • Postal employees have a strong ethos of caring for the transactions, and already have procedures for handling cash.
  • Post Offices are accustomed to handling critical, private matters in a timely way.

Identity management seems another valuable service that the USPS might provide.