I sit, sipping bitter coffee, and pondering where I have gone wrong.
I sit, sipping bitter coffee, and pondering where I have gone wrong.
Quite well, starting with candied (crystallized) ginger, shown above.
After a rough start, growing ginger in Virginia turned out to be an outstanding success.
The big plus of growing ginger in this climate (USDA zone 7) is that the growing season is way too short to produce mature ginger root. So what I got was seven pounds of immature (baby) ginger. And, as it turns out, immature ginger is a lot nicer to cook with than mature ginger.
My inability to produce mature ginger root is a feature, not a bug.
The picture above is a week or two after first killing frost.
My ginger stayed lovely and green, right up to the night that it froze solid. I can only assume that, as a tropical plant, it had no idea what was about to happen.
In any case, for a growing season that effectively started in June, I got three nice surprises:
The unexpected plus is that immature ginger root (shown below) is much nicer to use than mature ginger root.
Immature ginger — shown cleaned and bagged, above, and cut into chunks just above — lacks the tough skin and woody fibers of mature ginger. (Note I did not say “fibers”, I said “woody fibers”.) This makes it much nicer to use than mature ginger. Among other things, it’s easy to slice (using the slicer portion of a garlic press), and cooked thin slices of whole root are pleasantly edible.
On the downside, some say immature ginger isn’t as strong-tasting as mature ginger root. But ours is plenty peppery enough for us. Others say that, lacking a tough skin, immature ginger has to be used fresh or preserved. That drawback, I buy into. After cleaning, the roots are nearly skinless. They surely don’t look tough, the way mature ginger root looks.
Aside from ginger syrup (which yields crystallized (candied) ginger slices as a byproduct), my wife’s preferred bulk preservation method is to create ice cubes of frozen ginger puree.
The sequence below shows chunks of (cleaned) immature ginger being turned into frozen ginger puree.
First, chunk (as above), then chop in a food processor. After cutting the immature ginger roots into chunks the size of grapes, run those ginger chunks through a small food processor. Pulse/scrape as needed until you get them to the consistency of a chopped-up paste. Like so:
Then purée: Add just enough water to let that mix circulate and turn into a smooth purée as the food processor runs. If you were adding a small amount of citric acid as a preservative, you’d add it while puréeing.) Let it run. From chopped to puréed might be five minutes of food-processor running time.
Freeze as you would ice cubes. Pour/spatula the puréed immature ginger root into a silicone ice cube tray. (Silicone makes it easier to release when frozen.)
Store the frozen cubes in the container of your choice.
One cube yields one cup of ginger tea (with the addition of a cup of hot water and the sweetener of your choice.) As if made from the fresh root. Insoluble plant matter in the cube becomes dregs in the bottom of the cup.
To our surprise, ginger syrup and candied ginger are two products of the same process. You boil thinly-sliced ginger root in water for half-an-hour. Toss most of that liquid. Add sugar. Boil for another half-an-hour. Pour off and save the liquid to be ginger-infused simple syrup. Dust the ginger slices with table sugar, and leave them to dry.
The results, when dry, are candied ginger.
It’s candy, but you don’t pop these like Tic-Tacs. Ginger root is peppery — the “gingerols” in ginger are analogs to the capsaicins in hot peppers. This “candy” is not for the faint-of-heart. And you’d best like the taste of ginger, because it’ll be with you for a while after you eat one.
My prior post has most of the technical details on growing ginger in USDA zone 7.
Post G24-010: Growing ginger in Virginia? This needs a rethink.
Ginger is a tropical plant.
My garden soil (in USDA zone 7) never gets warm enough to make ginger happy. I have to grow it in some sort of container, so that the soil will get to the roughly 90F that ginger prefers. This, in turn, meant hooking up some irrigation on a timer, because otherwise I’d forget to water those containers. So there’s a fair bit of prep required to get this up and running.
This year, I followed the standard advice and started ginger inside. The idea being that you need to start it 10 months before first frost, if you want any hope of harvesting mature ginger root. But starting it early was a waste of time, because normal wintertime room temperature is too cold for ginger to grow. So, unless you want to keep heating your ginger the entire time you’re growing it, all it does is sit around and wait for warmer weather.
Now that I know I actually prefer immature ginger root, next year I’m just going to plant it outside, in planters, around the first of June (Zone 7). Knowing full well that I can’t get mature ginger that way.
At the other end of the season, my ginger seemed to stop growing entirely by mid-September here in Zone 7. It didn’t die. It just didn’t grow. Again, now that I know I won’t get mature ginger root, I could dig it up any time time from early September onward.
The upshot is that in Zone 7, if you grow it in containers outdoors, you have more-or-less three months in which ginger will grow. Any spring-like or fall-like temperatures seems to send it into hibernation. To be a fair, it is a tropical plant. It’s my bad for planting it an inappropriate climate. But the good news is that this seems to be plenty of time to produce a crop of immature ginger. Which, as I noted above, just seem to beat the pants off of mature ginger root, from an ease-of-culinary-use standpoint.
Nothing bothers ginger, here in Virginia. I had zero insect, animal, or disease damage on this little crop of ginger.
This is tough to clean! If I had this to do over, I’d pick a different growing medium that wouldn’t stick together so well. In the end, a) the ginger was firmly rooted in the potting soil I used, and b) every “elbow” of the ginger root (where two lobes grew close together) trapped dirt. I had to break the ginger up fully into pieces, so that I could scrub out all the trapped dirt.
The upshot of all that is that the digging-and-cleaning step was tedious. I don’t know how they get commercial ginger roots so clean, but I suspect it involves some sort of power sprayer. Next year, I think I’m going to try spraying it down, outside, using the garden hose.
This year, I took the standard advice for growing ginger in a non-tropical climate, and sprouted it around February 1.
This turned out to be a near-total waste of time, because ginger won’t grow unless it’s kept really warm. Specifically, warmer than I keep the inside of my house, in the winter.
As a result of their stubborn non-growth, I transplanted my pitiful ginger sprouts to containers, outside, in June. After they’d been more-or-less in suspended animation since they sprouted in February.
And that worked spectacularly well. Assuming you want immature ginger root. Which I now know that I do.
Without the thick skin and woody fibers of the mature root, immature ginger is just a whole lot easier to cook with. Instead of having to peel it and grate it, you just wash it and slice it. It’s soft enough and non-fibrous enough to go through the “slicer” section of a garlic press.
I’ve never grown ginger before, but a pound per square foot of container is an adequate yield from my standpoint. That’s as good a yield as any root crops I grow in my back yard. With the added bonus that the ginger plants are decorative, and that nothing in this region bothers it. No bugs, no deer damage, no fungi or other plant diseases.
It’s a pain to have to grow it in containers. But I consider that mandatory, as the soil in this region never reaches the 90F and up that ginger likes.
I’ll be growing this again next year.
This is my second post on learning the R computer language. That, after a lifetime of using the SAS language to manipulate and analyze date files.
I’m learning R piecemeal, one task at a time. My first task was to show the upward trend in the annual minimum temperature recorded for my location (Post #1970). Today’s task is to make a pretty picture. I want a choropleth (heat-map) showing income level by Census Block Group, for Fairfax County, VA.
I succeeded (below).
But it was not quite the thrill I thought it would be.
If you came here on the off chance that you, too, wanted to use R to produce a Census Block Group choropleth of income in Fairfax County, VA, then assuming you have installed R and RStudio and (see below) assuming you aren’t running Windows 7 or earlier, it’s as easy as:
install.packages("tidycensus") library(tidycensus) Your_Name_Here <- get_acs( geography = "block group", variables = "B19013_001", state = "VA", county = "059", year = 2020, geometry = TRUE ) plot(Your_Name_Here["estimate"])
Kind of anti-climactic, really. For something that I thought was hard to do. Or, possibly, it actually is hard to do, but somebody’s already done all the hard work.
I more-or-less stumbled across this example on-line. It worked. That’s pretty much end-of-story.
By way of explanation:
The install and library commands make the Tidycensus package available to your R session. (If required, R will automatically download and install the package from CRAN (the Google Play Store of the R world. If you’ve already installed it and it’s up to date, R just moves on to the next command.) Library is what makes the tidycensus package available to your R program (script).
Tidycensus defines the “get_acs” command. That reaches out and obtains your specified file from the Census Bureau. (That’s via an API, and, optionally, you can get your very own API key from Census and list that in the program.) In particular, this is asking for data from the American Community Survey, but you could ask for data from the decennial census.)
The important part is that this Census file brings its “geometry” with it. That is, each line of the file — each geographic unit — in this case, each Census Block Group — comes with the detailed line-segment-by-line-segment description of its boundaries. That description sits in a great big long variable-length text field at the end of the record. (Including the geometry with the file increases the file size by a couple of orders of magnitude, which probably explains why it’s optional.)
(This job also brings a bit of data, but you have to study the arcana of Census files to know that B19013 is median household income. I think -001 signifies entire population. Plus, that hardly matters. You can merge your own CBG-level data values to this file and use those to make a CBG-level heat map.)
Once you have the Census file, with the Census geometry on it, you can easily find something in R that will plot it as a map. I think a lot of that happens natively in R because Tidycensus will create your Census file as an R “shapefile” (“sf” data frame), when you keep the geometry. Because it’s that type of file, R then knows that you want to use it to draw a picture, and … apparently R handles the rest through some reasonable defaults, in its native plot command.
Or something.
I’m not quite sure.
Plus, there appear to be many R packages that will help you make prettier plots. So if the simple plot command doesn’t do it for you, I’m sure there’s something that will.
This last bit pretty much sums up my take in R, so far, after a lifetime of programming in SAS.
To produce and run that four-line program above.
My biggest mistake, as it turns out, was learning R on my trusty Windows 7 laptop. That worked fine, it just required finding and installing outdated copies of R and RStudio. (R is the language, RStudio is the interface you use to write and run programs (scripts) in R.)
But this didn’t work at all for this task. I tried several R packages that promised to produce choropleths, only to face disappointment coupled with cryptic error messages.
Eventually it dawned on me that some of what R was trying to do, as a matter of routine, in 2024, was perhaps non-existent when Windows 7 was launched in 2009.
So that led to a big while-you’re-at-it, installing the latest version of R and RStudio on my glacially-slow Windows 10 laptop. On that machine, everything R ran just hunky-dory. If very slowly.
All R-related incompatibilities ceased. The desired choropleth emerged.
Below are the biggest things I’ve noticed in programming in R, compared to SAS.
To make sense of this, translate the R term “packages” as add-ons, or plug-ins, or extensions, or whatever rings a bell. They are things that add functionality to a base piece of software.
First, there’s a whole sub-market catering to the SAS-to-R switchers. Everything from excellent cheat sheets for R equivalents of common SAS tasks, to at least one R package (“procs”) that lets R mimic a few handy SAS procedures (freq, means, print, and some others).
Second, there are more than 5,000 R packages on CRAN. The Comprehensive R Archive Network is like the Google Play Store of the R world. It’s where all the interesting optional software is kept. There’s some organization to all of that, but I’m not quite sure how much. There’s an index, of sorts, but I haven’t used it yet.
Third, some chunk of that package-intensive computing just makes up for base R being not very useful. A whole lot of example programs assume you’ve attached the “tidyverse” package, plausibly because a lot of the basic commands in tidyverse are routinely useful things that base R lacks.
Fourth, the whole “package” thing has no (or little) top-down organization. Near as I can tell, nothing prevents different package writes from defining the same command or same operator differently. As a SAS guy, that strikes me as a major quality control problem just waiting to happen. But the upshot is that the list of packages used (via attach and library statements) is an integral part of a well-documented program.
Five, now all restaurants are Taco Bell files are spreadsheets. By that I mean that R can only work on files that will fit into computer memory (RAM). Whereas SAS can work on files of essentially unlimited size, but that’s by working disk-to-disk or tape-to-tape. That has some odd spillovers to programming style, where R seems to favor making many-little-changes (like formulas in spreadsheet columns), where SAS favored one-long-data-step, where a complex series of calculations was carried out in one “pass” of an underlying data file.
Six, R names are case-sensitive. As a SAS programmer, I sure wish they weren’t. E.g. Var and var are two different names, of two different variables. I’m stuck with having to respect that. For at least the next reason.
Seven, R does a dandy job of reading data out of spreadsheets. By far the easiest way to import data into R is .csv or spreadsheet. In both cases, the variable names “come with”, so you inherit the data and the names that the data creators used.
Eight, slang, or short and long-form grammar for commands. I’ve already come across two forms of the merge function, one of which kind of spells-it-all-out, one of which is abbreviated.
Nine, R can only merge two files at once, natively. I think that’s right. The original (non-slang) form of the merge statement makes that clear with “x =, y= ” terminology, which pretty clearly on accommodates two files.
I don’t think I’m ever going to be a big fan of R.
But, R will do. It’s good enough for doing all kinds of “serious” data set manipulations (e.g., match-merging files based on some common identifier or identifiers).
And it’s kind of like a lottery. If somebody has already written a package that’s just spot-on for something you’re trying to do, then all you need is a few magic words, and voila.
Below is NotebookLM’s report on the first 43+ minutes of last night’s Town Council Work Session. Town posted the video promptly.
The audio of that meeting is all that NoteboolLM knows about this particular issue. I think.
PSSST: Then how did it get the architect’s name spelled correctly? OK, so the AI knows a little more than it’s letting on. The only thing I fed it, for this session, was the 43 minutes of audio.
One is never quite sure whether an AI is pulling one’s leg or not. But, this was free, and I think I know more, after reading this, than I did before.
This audio recording documents a December 2024 Vienna town council work session focused on preparing for a January 2025 session concerning a potential aquatic and fitness center. Council members submitted questions for consultants and staff regarding projected costs, revenue models, and community needs. A vote was taken to determine which questions would be prioritized for the upcoming session. Concerns were raised about funding mechanisms and the impact on local businesses and residents, including the possibility of a referendum. The session concluded with a decision to proceed with the investigation, despite some dissent.
NOTE that the text below is also AI-generated, but seems to have come in a form that won’t let me edit it. (So I can’t turn the text to a different color to set it apart as AI output.)
Subject: Aquatic and Fitness Center Annex Proposal – Information Gathering and Decision-Making Process
Date: December 16, 2024
Attendees:
Purpose: To identify key questions and information requirements for the Town Council to consider before making a decision on the proposed Aquatic and Fitness Center Annex on January 27th, 2025.
Background:
The Town Council is considering a proposal for an Aquatic and Fitness Center Annex. This proposal includes a significant capital investment and ongoing operating costs. A consultant, Kimmel Bogrett, has provided initial analysis, and Town Staff has conducted independent research.
Key Themes and Concerns:
Council Member Roy: “Is it one in five [households] and for them [Kimmel Bogrett] to explain that… I want names of localities so we can call them up and find out how things are going.”
Council Member Chuck: “My questions… really relate to how much revenues can we expect to um generate from this facility to offset the pretty substantial operating costs.”
Council Member Chuck: “The estimates provided by the consultants is that… the annex would um attract around 2,000 memberships… the county has 16,660 countywide for nine facilities… So the consultants analysis basically posit It’s a slightly higher membership rate even though the facility is only one-third roughly one-third the size of the average county facility.”
Council Member Sandra Allen: “I have an issue with the funding… I want to make sure our residents have the decision the ultimate decision… and I want to put this in a referendum.”
Mayor: “So, we’ve talked about there’s a lot of ways to raise revenue… What is that balance? And what are the different types of um ways to raise revenue?”
Action Items and Next Steps:
Conclusion:
The Town Council is committed to a thorough and transparent decision-making process for the Aquatic and Fitness Center Annex proposal. Gathering detailed information on financial viability, market demand, and operational considerations is crucial to ensure a fiscally responsible and community-oriented outcome.
Turns out, buying an artificial tree was the perfect manly chore.
Equal parts toting heavy objects and questionable taste. Continue reading Post #2070: Artificial Christmas tree.
Town Council did not vote on raising the meals tax last night.
They’ll revisit in January.
I have only bits and pieces of observations to report.
Virginia law is reasonably clear about what it takes for a Town to impose a tax. Virginia Code § 15.2-1427(g): “ In towns, no tax shall be imposed except by a two-thirds vote of the council members.”
Which means, with the seven-member Town Council, in the Town of Vienna, it takes five “aye” votes from Town Council members to impose a tax.
As noted in the picture above, there were only six Town Council members present last night. And based on their remarks, it’s a fair guess that at least two of them would not have voted for the meals tax increase at this time.
Leaving just four potential “yes” votes. Insufficient for imposing a tax.
If it had come to a vote last night, it would almost surely have failed.
In any case, there was no vote.
As it turns out, this five-votes-are-needed for tax increases mattered quite a bit the last time the Town increased the meals tax.
You may recall that the Town temporarily increased the meals tax by one cent, to pay for the land that is now the Town Green. As with the current proposal, that included a sunset clause. I recall it being on-order-of seven years.
But when it actually came time to sunset that meals tax increase the last time, the then-Mayor and Town Council balked. They attempted to renege on that sunset promise. And in fact, the motion to go back on their word, and make the increase permanent, got four yes votes, and three no votes.
Which meant that the Town Attorney had to inform the then-Mayor that the motion had failed. Because, as it was a motion to impose a tax, it needed five yes votes to pass.
Back to the present, while this may seem like legal trivia, the law is written this way for a reason. And given that it’s the same Town, and I think the same Town Attorney, I sure don’t see any wiggle room here. If they want to impose an additional cent of tax, it should require five “yes” votes. Not four.
… then start by removing the disinformation from the Town website.
Above is the finance portion of Town’s public-facing write-up of the proposed pool/gym, accessible at:
https://www.viennava.gov/engagement-central/annex-reimagined
I leave to the reader to count the number of times that the Town mentions the $1000/year family membership fee, or the ongoing operating losses to be covered by property or other taxes.
Zero. Neither of those is mentioned.
And that’s in case you didn’t get the same incorrect message from the Town’s mass mailing postcard. Which also made it seem as if one cent on the meals tax for ten years would pay for everything.
The description of the financing, above, is both misleading and materially incorrect. It gives the impression that the pool will be free, when in fact, it will cost as much to use as the Fairfax Rec Centers, and will come with an ongoing property tax burden to boot.
Town staff know this. Town Council knows it. The Mayor knows it.
And yet, the Town’s official description of the proposal goes out of its way to give the impression that the entire source of funding is a penny on the meals tax. And yet, never quite crosses that line into saying something potentially actionable.
It merely omits any mention of unpleasant things such as user fees and property taxes.
With this kind of stuff — disinformation? propaganda? — with a description that makes it seem like this pool is free, why would any sane person think that the Town is interested in an even-handed discussion and decision?
Anyway, the Mayor seemed peeved that on-line chit-chat assumes this is a done deal.
All I have to say in response is, look at the what’s posted on the Town of Vienna website, and come to any other conclusion. If you don’t want it to look like it’s wired, then start by not putting propaganda in our mailboxes or on the website.
I realize the Mayor has no direct control over the running of the website. But, in theory at least, you’re all part of the Town of Vienna government.
Source: TOV Granicus page, .pdf The consulting firm who worked up the numbers for what it’ll cost Vienna to run this building (Ballard King) was, in fact, the chosen partner of the architectural firm that wants to sell Vienna the building in the first place (Kimmel Bogrette, KB above). We, as the buyer, are literally looking at the seller’s estimate for what it’ll cost us to run our building, once we buy it.
The Town Manager went way out of his way to disparage the estimates that Town Staff had just provided, for operating losses for the proposed facility. He described them as some sort of extreme worst-case scenario. It was, as far as I could tell, a completely gratuitous comment. Didn’t need to be made. It just came out of nowhere. And, it contradicts what the staff writeup actually said, listing 35% to 50% cost recovery as the norm, making a mere 50% loss the best you could hope for, not the worst.
This in some sense matches the verbiage of the Town Staff’s materials (see prior post), but in that reading I attributed their use of “conservative”, to describe their loss estimate, as being due to the “extra revenue sources” not included (in CAPS in slide above). But all extra-ordinary revenues aside, unless I misread that 35%-50% line, 50% cost recovery is about as good as it gets, in this industry, for a facility like the proposed one.
The other shoe to drop in this area is that they’re going to invite the consultants to present their operating cost numbers, in January. Again, inviting somebody to show you the seller’s estimate of what it’ll cost to run the building they’re trying to sell you.
I don’t really understand why a buyer would ask the seller for any estimate of this sort. It’s the seller’s number. We’re the buyers.
But, on top of that, once the seller has given you a set of numbers that were so rosy as to be useless, you’d think you’d be done with it. You’d say, OK, we were told about what we should have expected the seller to tell us.
Instead … we’re asking them back? Giving them another bite at the apple?
Edit 12/11/2024:
Why?
It’s not clear to me.
On the one hand, they may have Ballard*King present a full-throated defense of their 15% operating loss projection.
I’m going to hazard that this would be inadvisable, if for no other reason than that projected 85% cost recovery (15% operating loss) is well outside the range listed by Town Staff as some sort of industry norm of 35% to 50% cost recovery. Red arrow in graphic just above. (Part of materials posted for the 12/9/2024 Town Council meeting. See Post #2067).
Then my thought becomes, good heavens. Town Staff cannot be asking Town Council to see important new material regarding likely operating losses, and then vote the tax up or down in the same session. Are they?
That also seems inadvisable, for the hurry. Although, it does convey the “decisions just wander around until they stop” vibe that Vienna puts out. So why not, I guess, have a presentation of new information from the seller’s side, and then have Town Council vote on the tax, immediately, all in one session.
Funny anecdote. I had a boss like that once. He worked with a big committee of industry hotshots. They, in turn, needed to settle on proposed changes to Medicare’s payment policies. My boss’s job, was, in part, to shepherd them to a decision. There was a lot of discussion around the table. Likening “the decision” to a ball, if the ball stopped rolling at some point my boss didn’t particularly like, he’d kick that ball back into play with some sort of pointed question. And when the ball stopped where he wanted it, he remained silent.
I could see this as a face-saving, peace-keeping maneuver, prior to a vote. If the consultants were willing to repeat what they said already, in their written materials, which is that they assumed Vienna would be the only “REC-Center-like” facility in the market area. And work from there. Toward market conditions as stated by 2014 Town Council member Polychrones. I think the consultants might reasonably suggest that our actual, observed operating losses might be more than they projected. How much more, they can wing it if they want to, but I’d say that would require additional work to answer. It’s out-of-scope.
Done with grace, that would serve to provide “white coat” cover to those who wish to ignore the operating cost issue. You’d be free to interpret that as the experts saying they had it spot-on, and they might consider tweaking their estimate in response to local market conditions. But no more than that. So it’s pocket change.
That would also provide an out for those who have focused on Kelleher quantified, and other “benchmarks”, or just feel it isn’t worth it, to burden the restaurant industry in the first place, let alone the operating cost burden. Those folks can say, fine, the Vienna facility would have one-third the size, but two-thirds the operating cost, of a typical Fairfax County REC Center. We’re going to pay for that, forever. That, so that some people won’t have to drive as far to use a gym/pool. That suggests poor value, e.g., if there’s money to spare, I’d rather lower the water bills first.
Then have Town Council bat it back and forth one last time, and vote. As previously noted, I’m pretty sure this takes five yes votes to pass, as it is the imposition of a tax.
As an afterthought, I hope we have all gotten our minds around a study that we paid for, using the (presumed respected) firm hand-picked by the seller. As the buyer in this transaction, it’s that last phrase that should trigger your sense of caveat emptor. If it does not, you are presumably part of their target audience. But as someone who made a living consulting, I can tell you, that definitely triggers mine. I doubt that the architectural firm for this proposed facility has a habit of shooting itself in the foot.
I still haven’t heard either Kelleher or Polychrones mentioned in any Town Council discussion.
Both of those ex-Town Council members are still around, though neither lives in Vienna any more.
In any case, I think at least a couple of Town Council members get it. That Kelleher was right about economies-of-scale, that Polychrones was right about the stiff competition for this type of facility, from the three local Fairfax County REC Centers.
But officially, as far as the current deliberations go, the rationales for the operating costs concerns that contributed to the 2014 “no” vote — those have simply gone down the memory hole.
So here’s my prediction.
The consultant’s original rosy scenario for operating costs was too rosy. It was obviously wrong, when benchmarked against data for this area. In hindsight, that was a strategic mistake.
So, Town Staff is going to have the same consultants come back and present … just guessing here … a somewhat less rosy scenario. Edit: Or maybe a YMMV from the consultants, as a way to reconcile all this.
Which Town Council members who wish to do so may then accept as being adequate for use in sweeping the operating loss issue — the ongoing taxpayer subsidy — under the rug. Edit: And, in fairness, if done well, will also provide support to those who, for a variety of reasons, expect to see less demand and higher operating losses than the original operating loss projections suggested.
There is also a work session prior to that. I don’t even want to think about that, as my best guess is, that’ll be where Town staff will soften up Town Council members who resist accepting the seller’s new numbers.
And if five Town Council members vote “yes”, at the end of January, then it’s a go on the meals tax, and for the Vienna pool/gym.
Near as I can tell, the following statements are true:
A small-scale facility such as the one proposed by Vienna will cost about twice as much to operate, per square foot, as the nearby Fairfax REC Centers.
If Vienna merely manages to attract as much revenue as Fairfax does, per square foot of facility, then Vienna taxpayers will cover 50% of the operating costs of the proposed Vienna pool/gym facility. (User fees such as annual memberships will cover the other half.)
This is the scenario — 50% operating losses — now being shown Town Council, on this round of discussion.
With the staff proviso that there may well be enough un-conventional revenue sources to cover the operating losses without using Vienna tax dollars. (Which I read as not specifics, but as a plea not to shut the door on having a pool, until Town Staff have had time to look into those alternative revenue sources, and see if anything pans out.)
That all seems squared away now, in my opinion. I think that’s a realistic view.
Plus the cost of the land. And the cost of building the facility. Both of those capital costs, paid for or to be paid for, by the meals tax.
Which is the proximate issue, for this evening’s Town Council meeting.
So it costs money. Even tax money. So what else is new. Parks cost tax money. Why not here too?
Turns out, this is a rock best left unturned.
Let me start with a walk on the light side. Only after you look at the Fairfax County Park Authority as a whole do you really appreciate how rational their system is.
Fairfax doesn’t subsidize the operating costs of the REC Centers. That’s not where indoor swimming falls, in their spectrum of subsidy level for recreational activities. On their subsidy-meter, indoor swimming falls at “pays its own way”. Covers operating cost:
After you absorb that — they chose to make REC Centers cover their own operating costs (or had to, as a political bargain), then it eventually dawns on you that this is why Fairfax has just a handful (9) of gigantic REC Centers. Their best shot at making them self-supporting was by building them big, in the presence of significant economies-of-scale.
Like it or not, REC Centers constitute part of an orderly and coherent enterprise. They have a planned level of subsidy that fits into an overall scheme of recreational activity, from golf to a walk in the park. And the REC Centers appear to have been built at an efficient scale.
Overall, across all its enterprises, the FCPA covers about two-thirds of operating costs with user revenues in one form or the other. For comparison, the corresponding calculation for Vienna Parks and Rec is less than one-third, based on the 2025 Town of Vienna budget, page 101 for the revenue number.)
Then you look at Vienna, and it’s just slap-dash.
Vienna’s subsidy level for this type of recreation isn’t chosen with forethought. It’s going to be whatever the shortfall is, said shortfall likely owing to the inefficient scale of the facility. So it’s 50-percent-ish, not because that reflects some purposefully decision by Vienna that indoor swimming deserves this level of subsidy, but because it’s what we gotta do, financially, to have one these pool/gym things right here in Town.
It’s literally the residual — the afterthought, just like the chosen scale of operation. The Town happened to pick up this particular piece of land, and now because this one-third-scale facility is what fits on that land, you get the resulting high average costs, and because our user fees are effectively capped by what Fairfax charges, that’s why we end up with a 50% subsidy.
Even then, Vienna is wealthy enough, that you could just kind of laugh this off in a “what a first-world problem” kind of way.
But if most of what this does is merely cannibalize membership from the nearby Fairfax REC Centers, all we’re doing is raising everybody’s costs. You’ve pulled people out of an efficiently-sized facility and enticed them to come to yours. Presumably, in order to have somewhat shorter average travel times for those switching to the Vienna facility. And you’ve enticed them to do that by subsidizing your fees, so you appear no more expensive than the further-away REC Centers.
And second, it’s not as if this is an environmentally benign thing to build. My guess, from some projection of the electric bill, it’ll use enough electricity to power 75 homes or so. Between 1 and 2 percent of all the homes in Vienna.
And finally, don’t forget the opportunity cost. What is the point, exactly, of passing a Parks and Rec master plan, like, eh, a couple of months after locking up all your capital, for the foreseeable future, in this pool/gym thing. Is that so you can talk about all the changes you’d like to make, to optimize Vienna parks, but now no longer can?
This ready-fire-aim decision-making is so weirdly a part of the Town of Vienna vibe that we who live here perceive nothing unusual in it. But it’s not until you study the Fairfax County Park Authority that you realize just how well they have their act together. And how little does the Town of Vienna have its act together.
And that’s what did it for me.
You know how deep our thinking goes? It goes as deep as “citizens of Vienna have long wanted a pool”. And that we, could, in fact, have one. It won’t bankrupt the Town.
In the end, it boils down to dumping a whole lot of money into providing services locally, that are already provided nearby. Not cheaper, or better, or really even, different. Just closer. More Vienna-centric.
I’m not seeing the value in that.
But I’ve been using the Fairfax County REC Centers for years.
Vienna pool? Build it, don’t build it, I don’t much care. It’s not going to affect me one way or the other.
In this post, I sum up:
I was asked a question regarding “capital reserves” for a pool. That’s the $100K item circled above.
Is that enough, set aside, for future repairs and replacement of the long-lived, big-ticket items, as they wear out? Things like the roof, the HVAC system, carpeting, parking lot pavement, and the equipment.
Turns out, that’s a surprisingly hard question to answer.
But my answer is, yeah, probably. Or, at least, I can’t possibly know enough to say otherwise. Continue reading Post #2066: Vienna pool capital reserve
For me, this whole Vienna pool/gym thing has been like opening a big box of chocolates. Every day, there’s a different and unexpected treat.
Today its the “25% upcharge for non-residents”.
Sometimes, you bite into one of those fancy chocolates, and it’s not at all what you expected.
On the one hand, it seems like a simple matter of fairness. Let’s suppose that Vienna taxpayers have to kick in (say) 20% of the operating costs of this facility year after year. So that the fees charged to Vienna users only cover (say) 80% of costs.
Well, then, if you don’t pay Vienna property taxes, then it’s only fair that you ought to make up for that by paying (20%/80% =) 25% more for a membership.
Obviously, we must ask non-residents to pay the full, un-subsidized price. Because they aren’t paying Town of Vienna taxes.
That’s the rationale for a 25% up-charge. It’s so that everybody pays the same, for using the facility.
It’s obvious, right? This homey little “fairness” story has a lot of common-sense appeal. I mean, surely you would not ask Vienna residents to subsidize the swimming of non-Vienna residents? That has to be nuts, right?
First point: What does the average Vienna pool member actually pay, in total, including tax subsidy? What’s the true “ticket price” that you charge them?
Assume for a moment that the following is true:
Under these assumptions, how much does the average Vienna resident who purchases a membership actually pay, including both the purchase price, and the tax subsidy?
The answer is c, $1025.
If everybody in Vienna pays for the pool, but only one-in-ten uses the pool, then the average pool user’s share of the tax subsidy is one-tenth of the total.
If you focus narrowly on the ticket price — that the total price of a membership, to a non-Vienna resident, must match the total amount paid by the average Vienna pool member, including what that member paid in tax subsidy — then the fair price for non-residents is $1025.
That’s because Vienna-resident pool users themselves are subsidized by all Vienna taxpayers.
There is a counter argument that, somehow, taxes are all a wash. So that even if you don’t join the pool, maybe your pool joiners don’t have their leaves vacuumed up, or use the ball fields, or something. So there is some sort of a fuzzy, we’re-all-in-this-together, it-all-averages-out argument for including the total value of all taxpayer contributions, when figuring the “fair” non-resident upcharge.
If the goal is merely one of pricing — that everybody who uses it pays the same total price — then the right non-resident price in this case is a 2.5% up-charge. Not a 25% up-charge.
Well, it’s 100%. Based on the same naive reasoning that gives you the plausible-sounding 25% upcharge. If the taxpayer subsidy covers half the costs, then the un-subsidized membership price would be doubled. The “fair” membership fee, for those outside the Town of Vienna, would be $2000/year for a family.
So, $1000/year for a Vienna family. And $2000 a year for a non-resident family membership.
Does anything strike you as impractical about that?
As in, how many non-resident memberships would you expect to sell, given that there are three Fairfax REC Centers nearby, and those only cost $1000/year for a family membership?
If you have (say) 30 people swimming in your municipal pool, and you add one more, how much does that increase your costs?
If you said, probably close to zero, then I’d say you’re all-the-way right.
And so, until such time as the facility gets “congested” (in economics-speak) — so crowded that it’s hard to find a parking place, or there’s no room to swim laps, or you have to wait to use your favored weight or cardio machines — having more people use the facility literally costs nothing. Or very close to it.
Translation: Additional users are pure profit. Until such time as the facility gets congested from over-use.
Now how do you feel about that hefty up-charge? In particular, how smart does it look to charge so much that you totally discourage membership purchases from outside the Town of Vienna?
The taxpayer subsidy is literally the hole in this facility’s revenues. And by focusing on that hole, you are missing the doughnut entirely.
The doughnut here is the total revenues for the pool. (Less costs, which by assumption are more or less independent of the volume of users.)
The question you need to ask is: “What non-resident upcharge policy results in the least expenditure by Vienna taxpayers”.
Which, if total costs really don’t vary significant with the number of users, amounts to, what non-resident upcharge policy results in the highest facility revenue? Again, consistent with the facility not being congested, that is, so crowded that it becomes unpleasant to use.
In short, the “fair upcharge” viewpoint is a poor way to look at this because it only focuses on costs. It ignores revenue (the doughnut). A high upcharge may, in fact, shrink the doughnut, and leave you with an even bigger hole to fill.
Formally, price elasticity of demand in this case is defined as the percentage reduction in non-Vienna memberships sold, divided by the percentage upcharge.
If a 10% upcharge results in a loss of 10% of your out-of-town membership (relative to the number you’d get with no non-resident upcharge), you’d take in roughly the same revenues with or without the upcharge. That is, price x quantity = revenue, so 110% x 90% = 99%.
Doing the math, if a 25% upcharge loses you more than 20% of your out-of-Town memberships, then imposing that upcharge is a case of shooting yourself in the foot. Because 125% x 80% = 100%. Any loss greater than 20% results in less total revenue, and so results in a bigger required taxpayer subsidy for the facility. (Assuming that marginal cost is zero, and that the facility does not get congested.)
For example, suppose that imposing a 25% upcharge chases away half of your potential out-of-town memberships. In that case, your revenues from out-of-Town members fall by more than a third. (That is, 125% x 50% = 62.5%.) If costs don’t change, then Vienna taxpayers have to make up for those lost revenues.
First, if you insist on charging a “fair’ price to non-residents — that is, the price absent any Vienna taxpayer subsidy — you’re going to get some sticker shock if operating losses are as high as I have projected them to be. You’ll end up trying to charge $2000/family for non-residents. And I’m guessing you’ll end up collecting next-to-nothing.
In that extreme case, it’s fairly easy to see that charging the “fair” price could easily mean shooting yourself (the Vienna taxpayer) in the foot. All the revenues that you don’t collect, from those outside of Vienna, translate into higher annual operating losses that must be covered by the TOV taxpayers.
But more generally, simple pricing rules-of-thumb may not result in the lowest Vienna taxpayer subsidy. That’s true for the upcharge decision. That’s also true for the decision on what to charge Vienna residents in the first place. I’ve been working under the assumption that we’ll charge what Fairfax charges. I’m pretty sure we can’t charge a lot more than that, and still have much business. But there’s no guarantee that charging at the Fairfax County rate is going to minimize operating losses for the facility. That would depend on Vienna residents’ price elasticity of demand for this facility.
Finally, we should face up to the possibility that, politically, we may have no choice but to shoot ourselves in the foot. Even if we knew that a “fair” upcharge would end up costing the taxpayers money, I would not want to be the person to explain why we’re letting non-Vienna residents join the pool for the same membership fee as residents.
Worse, if you had some sort of value-based price discrimination in mind (i.e. pick what pockets you can), if travel time is the big dis-utility for regular gym use, you’d charge TOV residents more than you’d charge those from further away. Try explaining that one, to a grumbling crowd of taxpayers.
Best guess, the upcharge is going to be some plausible-sounding round number. And nobody’s going to give a second thought to guessing what the impact of that will be, on Vienna taxpayers.